summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp')
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp167
1 files changed, 0 insertions, 167 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp
deleted file mode 100644
index ff8390f5150..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-/*************************************************************************
-** DVIReader.hpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 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 DVIREADER_HPP
-#define DVIREADER_HPP
-
-#include <limits>
-#include <map>
-#include <stack>
-#include <string>
-#include "BasicDVIReader.hpp"
-#include "Color.hpp"
-#include "VFActions.hpp"
-
-class Font;
-class FontStyle;
-class HashFunction;
-class NativeFont;
-class VirtualFont;
-
-class DVIReader : public BasicDVIReader, public VFActions {
- protected:
- enum class WritingMode {LR=0, TB=1, BT=3};
- enum class SetFontMode {SF_SHORT, SF_LONG, VF_ENTER, VF_LEAVE};
- enum class MoveMode {SETCHAR, CHANGEPOS};
-
- struct DVIState {
- double h, v; ///< horizontal and vertical cursor position
- double x, w, y, z; ///< additional registers to store horizontal (x, w) and vertical (y, z) positions
- WritingMode d; ///< direction: 0: horizontal, 1: vertical(top->bottom), 3: vertical (bottom->top)
- DVIState () {reset();}
- void reset () {h = v = x = w = y = z = 0.0; d=WritingMode::LR;}
- };
-
- public:
- explicit DVIReader (std::istream &is);
- bool executeDocument ();
- void executeAll ();
- bool executePage (unsigned n);
- double getXPos () const override {return _dviState.h;}
- double getYPos () const override {return _dviState.v;}
- int stackDepth () const override {return _stateStack.size();}
- int currentFontNumber () const {return _currFontNum;}
- unsigned currentPageNumber () const override {return _currPageNum;}
- unsigned numberOfPages () const {return _bopOffsets.empty() ? 0 : _bopOffsets.size()-1;}
-
- protected:
- size_t numberOfPageBytes (int n) const {return _bopOffsets.size() > 1 ? _bopOffsets[n+1]-_bopOffsets[n] : 0;}
- bool computePageHash (size_t pageno, HashFunction &hashFunc);
- virtual void moveRight (double dx, MoveMode mode);
- virtual void moveDown (double dy, MoveMode mode);
- void putVFChar (Font *font, uint32_t c);
- double putGlyphArray (bool xonly, std::vector<double> &dx, std::vector<double> &dy, std::vector<uint16_t> &glyphs);
- const Font* defineFont (uint32_t fontnum, const std::string &name, uint32_t cs, double dsize, double ssize);
- void setFont (int num, SetFontMode mode);
- const DVIState& dviState() const {return _dviState;}
- double dvi2bp () const {return _dvi2bp;}
- bool inPage () const {return _inPage;}
-
- // VFAction methods
- void defineVFFont (uint32_t fontnum, const std::string &path, const std::string &name, uint32_t checksum, double dsize, double ssize) override;
- void defineVFChar (uint32_t c, std::vector<uint8_t> &&dvi) override;
-
- // The following template methods provide higher-level access to the DVI commands.
- // In contrast to their cmdXXX pendants, they don't require any handling of the input stream.
- // All command arguments are delivered as function parameters. These methods are called after
- // the DVI registers have been updated, i.e. currState() represents the state after executing
- // the command. If the previous register state is required, prevState() can be used.
- virtual void dviPre (uint8_t id, uint32_t numer, uint32_t denom, uint32_t mag, const std::string &comment) {}
- virtual void dviPost (uint16_t stdepth, uint16_t pages, uint32_t pw, uint32_t ph, uint32_t mag, uint32_t num, uint32_t den, uint32_t lbopofs) {}
- virtual void dviPostPost (uint8_t id, uint32_t postOffset) {}
- virtual void dviBop (const std::vector<int32_t> &c, int32_t prevBopOffset) {}
- virtual void dviEop () {}
- virtual void dviSetChar0 (uint32_t c, const Font *font) {}
- virtual void dviSetChar (uint32_t c, const Font *font) {}
- virtual void dviPutChar (uint32_t c, const Font *font) {}
- virtual void dviSetRule (double h, double w) {}
- virtual void dviPutRule (double h, double w) {}
- virtual void dviNop () {}
- virtual void dviPush () {}
- virtual void dviPop () {}
- virtual void dviRight (double dx) {}
- virtual void dviDown (double dy) {}
- virtual void dviX0 () {}
- virtual void dviY0 () {}
- virtual void dviW0 () {}
- virtual void dviZ0 () {}
- virtual void dviX (double x) {}
- virtual void dviY (double y) {}
- virtual void dviW (double w) {}
- virtual void dviZ (double z) {}
- virtual void dviFontDef (uint32_t fontnum, uint32_t checksum, const Font *font) {}
- virtual void dviFontNum (uint32_t fontnum, SetFontMode mode, const Font *font) {}
- virtual void dviDir (WritingMode dir) {}
- virtual void dviXXX (const std::string &str) {}
- virtual void dviXPic (uint8_t box, const std::vector<int32_t> &matrix, int16_t page, const std::string &path) {}
- virtual void dviXFontDef (uint32_t fontnum, const NativeFont *font) {}
- virtual void dviXGlyphArray (std::vector<double> &dx, std::vector<double> &dy, std::vector<uint16_t> &glyphs, const Font &font) {}
- virtual void dviXGlyphString (std::vector<double> &dx, std::vector<uint16_t> &glyphs, const Font &font) {}
- virtual void dviXTextAndGlyphs (std::vector<double> &dx, std::vector<double> &dy, std::vector<uint16_t> &chars, std::vector<uint16_t> &glyphs, const Font &font) {}
-
- private:
- // The following low-level methods evaluate the DVI commands read from
- // the input stream and call the corresponding dviXXX methods.
- void cmdSetChar0 (int c) override;
- void cmdSetChar (int len) override;
- void cmdPutChar (int len) override;
- void cmdSetRule (int len) override;
- void cmdPutRule (int len) override;
- void cmdNop (int len) override;
- void cmdBop (int len) override;
- void cmdEop (int len) override;
- void cmdPush (int len) override;
- void cmdPop (int len) override;
- void cmdDir (int len) override;
- void cmdRight (int len) override;
- void cmdDown (int len) override;
- void cmdX0 (int len) override;
- void cmdY0 (int len) override;
- void cmdW0 (int len) override;
- void cmdZ0 (int len) override;
- void cmdX (int len) override;
- void cmdY (int len) override;
- void cmdW (int len) override;
- void cmdZ (int len) override;
- void cmdFontDef (int len) override;
- void cmdFontNum0 (int n) override;
- void cmdFontNum (int len) override;
- void cmdXXX (int len) override;
- void cmdPre (int len) override;
- void cmdPost (int len) override;
- void cmdPostPost (int len) override;
- void cmdXPic (int len) override;
- void cmdXFontDef (int len) override;
- void cmdXGlyphArray (int len) override;
- void cmdXGlyphString (int len) override;
- void cmdXTextAndGlyphs (int len) override;
-
- private:
- bool _inPage=false; ///< true if stream pointer is between bop and eop
- unsigned _currPageNum=0; ///< current page number (1 is first page)
- int _currFontNum=0; ///< current font number
- double _dvi2bp=0.0; ///< factor to convert dvi units to PS points
- uint32_t _mag=1; ///< magnification factor * 1000
- DVIState _dviState; ///< current state of the DVI registers
- std::stack<DVIState> _stateStack;
- std::vector<uint32_t> _bopOffsets;
-};
-
-#endif