diff options
author | Karl Berry <karl@freefriends.org> | 2017-01-31 18:37:40 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-01-31 18:37:40 +0000 |
commit | 4c245316c293169ee655c8e2f922b4bee454f9bc (patch) | |
tree | 2d3b72165f3e7e1298df8dad8b52f119a42228dc /Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h | |
parent | 54a2f67f996dceca3c89276dea798f746b3cacaf (diff) |
import original dvisvgm-2.1
git-svn-id: svn://tug.org/texlive/trunk@43102 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h')
-rw-r--r-- | Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h b/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h deleted file mode 100644 index 9b222f7c10d..00000000000 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGCharHandler.h +++ /dev/null @@ -1,108 +0,0 @@ -/************************************************************************* -** SVGCharHandler.h ** -** ** -** This file is part of dvisvgm -- a fast DVI to SVG converter ** -** Copyright (C) 2005-2016 Martin Gieseking <martin.gieseking@uos.de> ** -** ** -** 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 3 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. ** -** ** -** You should have received a copy of the GNU General Public License ** -** along with this program; if not, see <http://www.gnu.org/licenses/>. ** -*************************************************************************/ - -#ifndef SVGCHARHANDLER_H -#define SVGCHARHANDLER_H - -#include <stack> -#include "Color.h" -#include "Font.h" -#include "Matrix.h" -#include "types.h" - - -template <typename T> -class CharProperty { - public: - CharProperty (const T &v) : _value(v), _changed(false) {} - - void set (const T &v) { - if (v != _value) { - _value = v; - _changed = true; - } - } - - const T& get () const {return _value;} - operator const T& () const {return _value;} - bool changed () const {return _changed;} - void changed (bool c) {_changed = c;} - - private: - T _value; - bool _changed; -}; - - -class XMLElementNode; - - -/** Base class for all character handlers. These handlers create SVG representations - * for the added characters and append them to the SVG tree. */ -class SVGCharHandler { - public: - SVGCharHandler () : _color(Color::BLACK), _font(0), _fontnum(0), _matrix(1), _vertical(false), _initialContextNode(0) {} - virtual ~SVGCharHandler() {} - virtual void setInitialContextNode (XMLElementNode *node); - virtual void appendChar (UInt32 c, double x, double y) =0; - virtual void notifyXAdjusted () {} - virtual void notifyYAdjusted () {} - void setColor (const Color &color) {_color.set(color);} - void setFont (const Font &font, int id) {_font.set(&font); _fontnum = id;} - void setMatrix (const Matrix &matrix) {_matrix.set(matrix);} - void setVertical (bool vertical) {_vertical.set(vertical);} - Color getColor () const {return _color.get();} - const Font* getFont () const {return _font.get();} - const Matrix& getMatrix () const {return _matrix.get();} - - protected: - virtual void resetContextNode (); - void pushContextNode (XMLElementNode *node); - void popContextNode (); - - XMLElementNode* contextNode () const { - return _contextNodeStack.empty() ? _initialContextNode : _contextNodeStack.top(); - } - - CharProperty<Color> _color; ///< current color - CharProperty<const Font*> _font; ///< current font - int _fontnum; ///< current font ID - CharProperty<Matrix> _matrix; ///< current transformation - CharProperty<bool> _vertical; ///< current writing mode - - private: - XMLElementNode *_initialContextNode; ///< SVG element the generated character nodes are attached to - std::stack<XMLElementNode*> _contextNodeStack; -}; - - -/** Base class for all character handlers that create SVG <text> elements. */ -class SVGCharTextHandler : public SVGCharHandler { - public: - SVGCharTextHandler (bool selectFontByClass) : _selectFontByClass(selectFontByClass) {} - - protected: - XMLElementNode* createTextNode (double x, double y) const; - - private: - bool _selectFontByClass; -}; - -#endif |