summaryrefslogtreecommitdiff
path: root/Build/source/texk/lcdf-typetools/lcdf-typetools-src/libefont/t1bounds.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/lcdf-typetools/lcdf-typetools-src/libefont/t1bounds.cc')
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-src/libefont/t1bounds.cc165
1 files changed, 0 insertions, 165 deletions
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/libefont/t1bounds.cc b/Build/source/texk/lcdf-typetools/lcdf-typetools-src/libefont/t1bounds.cc
deleted file mode 100644
index 3766af2f58a..00000000000
--- a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/libefont/t1bounds.cc
+++ /dev/null
@@ -1,165 +0,0 @@
-// -*- related-file-name: "../include/efont/t1bounds.hh" -*-
-
-/* t1bounds.{cc,hh} -- charstring bounding box finder
- *
- * Copyright (c) 1998-2019 Eddie Kohler
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version. This program is distributed in the hope that it will be
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
- * Public License for more details.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-#include <efont/t1bounds.hh>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-namespace Efont {
-
-CharstringBounds::CharstringBounds()
- : _lb(UNKDOUBLE, UNKDOUBLE), _rt(UNKDOUBLE, UNKDOUBLE),
- _last_xf_program(0)
-{
-}
-
-CharstringBounds::CharstringBounds(const Transform& nonfont_xf)
- : _lb(UNKDOUBLE, UNKDOUBLE), _rt(UNKDOUBLE, UNKDOUBLE),
- _nonfont_xf(nonfont_xf), _last_xf_program(0)
-{
-}
-
-CharstringBounds::CharstringBounds(const Transform &nonfont_xf, const Vector<double> &weight)
- : CharstringInterp(weight),
- _lb(UNKDOUBLE, UNKDOUBLE), _rt(UNKDOUBLE, UNKDOUBLE),
- _nonfont_xf(nonfont_xf), _last_xf_program(0)
-{
-}
-
-void
-CharstringBounds::clear()
-{
- _lb = _rt = Point(UNKDOUBLE, UNKDOUBLE);
- _width = Point(0, 0);
-}
-
-void
-CharstringBounds::xf_mark(const Bezier &b)
-{
- Bezier b1, b2;
- b.halve(b1, b2);
- xf_mark(b1.point(3));
- if (!xf_controls_inside(b1))
- xf_mark(b1);
- if (!xf_controls_inside(b2))
- xf_mark(b2);
-}
-
-void
-CharstringBounds::act_width(int, const Point &w)
-{
- _width = w * _xf;
-}
-
-void
-CharstringBounds::act_line(int, const Point &p0, const Point &p1)
-{
- mark(p0);
- mark(p1);
-}
-
-void
-CharstringBounds::act_curve(int, const Point &p0, const Point &p1, const Point &p2, const Point &p3)
-{
- Point q0 = p0 * _xf;
- Point q1 = p1 * _xf;
- Point q2 = p2 * _xf;
- Point q3 = p3 * _xf;
-
- xf_mark(q0);
- xf_mark(q3);
-
- if (!xf_inside(q1) || !xf_inside(q2)) {
- Bezier b(q0, q1, q2, q3);
- xf_mark(b);
- }
-}
-
-void
-CharstringBounds::set_xf(const CharstringProgram *program)
-{
- if (_last_xf_program != program) {
- _last_xf_program = program;
- double matrix[6];
- program->font_matrix(matrix);
- Transform font_xf = Transform(matrix).scaled(program->units_per_em());
- font_xf.check_null(0.001);
- _xf = _nonfont_xf * font_xf;
- }
-}
-
-bool
-CharstringBounds::char_bounds(const CharstringContext &g, bool shift)
-{
- set_xf(g.program);
- CharstringInterp::interpret(g);
- if (shift) {
- _xf.raw_translate(_width - _xf.translation());
- _nonfont_xf.raw_translate(_width - _nonfont_xf.translation());
- _width = Point(0, 0);
- }
- return error() >= 0;
-}
-
-void
-CharstringBounds::translate(double dx, double dy)
-{
- _xf.translate(dx, dy);
- _nonfont_xf.translate(dx, dy);
-}
-
-bool
-CharstringBounds::output(double bb[4], double& width, bool use_cur_width) const
-{
- if (!KNOWN(_lb.x))
- bb[0] = bb[1] = bb[2] = bb[3] = 0;
- else {
- bb[0] = _lb.x;
- bb[1] = _lb.y;
- bb[2] = _rt.x;
- bb[3] = _rt.y;
- }
- if (use_cur_width)
- width = _width.x;
- else {
- Point p = Point(0, 0) * _xf;
- width = p.x;
- }
- return error() >= 0;
-}
-
-bool
-CharstringBounds::bounds(const Transform& transform, const CharstringContext& g,
- double bb[4], double& width)
-{
- CharstringBounds b(transform);
- b.char_bounds(g, false);
- return b.output(bb, width, true);
-}
-
-bool
-CharstringBounds::bounds(const CharstringContext &g,
- double bb[4], double& width)
-{
- CharstringBounds b;
- b.char_bounds(g, false);
- return b.output(bb, width, true);
-}
-
-} // namespace Efont