diff options
Diffstat (limited to 'Build/source/libs/graphite-engine/include/graphite/SegmentPainter.h')
-rw-r--r-- | Build/source/libs/graphite-engine/include/graphite/SegmentPainter.h | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/Build/source/libs/graphite-engine/include/graphite/SegmentPainter.h b/Build/source/libs/graphite-engine/include/graphite/SegmentPainter.h deleted file mode 100644 index 29564a6c63d..00000000000 --- a/Build/source/libs/graphite-engine/include/graphite/SegmentPainter.h +++ /dev/null @@ -1,234 +0,0 @@ -/*--------------------------------------------------------------------*//*:Ignore this sentence. -Copyright (C) 1999, 2001 SIL International. All rights reserved. - -Distributable under the terms of either the Common Public License or the -GNU Lesser General Public License, as specified in the LICENSING.txt file. - -File: SegmentPainter.h -Responsibility: Sharon Correll -Last reviewed: Not yet. - -Description: - Defines the class for a Graphite text segment. -----------------------------------------------------------------------------------------------*/ -#ifdef _MSC_VER -#pragma once -#endif -#ifndef GR_SEGPAINTER_INCLUDED -#define GR_SEGPAINTER_INCLUDED - -// undo automagic DrawTextA DrawTextW stuff -// #undef DrawText - -//:End Ignore - - -namespace gr -{ - -class Segment; - -/*---------------------------------------------------------------------------------------------- - A SegmentPainter handles the UI-related operations on for segment. - - This superclass does not know how to do any actual drawing, because it has no access - to a device. Subclasses are needed to handle drawing on the various platforms. In addition, - it is legitimate to make a subclass to override the behavior of a specific piece of - functionality. - - Hungarian: segp -----------------------------------------------------------------------------------------------*/ -class SegmentPainter -{ -public: - // Static methods - - // Constructors/destructors/etc. - SegmentPainter(Segment * pseg, float xOrigin = 0, float yOrigin = 0); - //SegmentPainter(Segment * pseg, float xOrigin, float yOrigin); - - virtual ~SegmentPainter(); - - virtual void setOrigin(float xsOrigin, float ysOrigin); - virtual void setPosition(float xdPosition, float ydPosition); - virtual void setScalingFactors(float xFactor, float yFactor); - - virtual void setBuggyDisplayFormat(int strategy, long textColor, long backColor, - long underlineColor) - { - // Currently not implemented to do anything useful. - } - - // The paint method must be implemented by a concrete subclass: - virtual void paint() = 0; - - virtual void drawInsertionPoint(int ichwIP, bool fAssocPrev, bool bOn, bool fForceSplit); - virtual void positionsOfIP(int ichwIP, bool fAssocPrev, bool fForceSplit, - Rect * prdPrimary, Rect * prdSecondary); - virtual bool drawSelectionRange(int ichwMin, int ichwLim, - float ydTop, float ydBottom, bool bOn); - virtual bool positionsOfRange(int ichwMin, int ichwLim, - float ydTop, float ydBottom, Rect * prsBounds); - virtual size_t getUnderlinePlacement(int ichwMin, int ichwLim, - bool fSkipSpace, - size_t crgMax, // number of ranges allowed - float * prgxdLefts, float * prgxdRights, float * prgydUnderline); - - virtual void pointToChar(Point zptdClickPosition, int * pichw, bool * pfAssocPrev); - virtual LgIpValidResult isValidInsertionPoint(int ichwIP); - virtual bool doBoundariesCoincide(bool fBoundaryEnd, bool fBoundaryRight); - virtual int arrowKeyPosition(int ichwIP, bool * pfAssocPrev, - bool fRight, bool * pfInThisSeg); - virtual int extendSelectionPosition( - int charIndex, bool assocPrevMatch, bool assocPrevNeeded, - int anchorIndex, bool movingRight, bool * inThisSeg); - - // For calculating underlines: - struct LineSeg { // hungarian: ls - float left; - float right; - }; - - static float ScaleX(float xs, Rect rs, Rect rd); - static float ScaleY(float ys, Rect rs, Rect rd); - - float ScaleXToDest(float xs) - { - float xd = ((xs + m_xsOrigin) * m_xFactor) + m_xdPosition; - return xd; - } - //int ScaleXToDest(int xs) - //{ - // int xd = (((xs + m_xsOriginInt) * m_xFactor64) >> 6) + m_xdPositionInt; - // return xd; // >> 6 means div by 64 - //} - float ScaleYToDest(float ys) - { - float yd = ((ys + m_ysOrigin) * m_yFactor) + m_ydPosition; - return yd; - } - - float ScaleXToSource(float xd) - { - float xs = ((xd - m_xdPosition) / m_xFactor) - m_xsOrigin; - return xs; - } - float ScaleYToSource(float yd) - { - float ys = ((yd - m_ydPosition) / m_yFactor) - m_ysOrigin; - return ys; - } - -protected: - // Member variables: - - Segment * m_pseg; - - // transformation factors: - float m_xsOrigin; - float m_ysOrigin; - float m_xdPosition; - float m_ydPosition; - float m_xFactor; // destination / source - float m_yFactor; // destination / source - - // optimizations for when we need integer arithmetic (converting between int and float is - // very slow) - DELETE these. - //int m_xsOriginInt; - //int m_xdPositionInt; - //int m_xFactor64; - - //gr::Rect m_rectSrc; - - // Other methods: - - void CalcOrDrawInsertionPoint( - int ich, bool fAssocPrev, bool bOn, bool fForceSplit, - Rect * prectPrimary, Rect * prectSecondary); - void InvertIBeam(float xs, float ysTop, float ysBottom, bool fAssocPrev, - Rect * prdRet); - void InvertSplitIP(float xs, float ysTop, float ysBottom, - bool fTop, bool fAssocRight, bool fSecondary, float ysMinSplitHt, - Rect * prdRet); - void CalcIP(int ichw, bool fBefore, - float * pxs, float * pysTop, float * pysBottom, bool * pfRtl); - bool CloseIPPositions( - float * pxsBefore, float ysBeforeTop, float ysBeforeBottom, - float * pxsAfter, float ysAfterTop, float ysAfterBottom); - bool AtEdgeOfCluster(GrSlotOutput * pslout, int islout, bool fBefore); - bool AtEdgeOfCluster(GrSlotOutput * psloutBase, int isloutBase, - GrSlotOutput * pslout, int islout, bool fBefore); - bool CanInsertIntoCluster(GrSlotOutput * pslout, int islout); - - void CalcPartialLigatures(bool * prgfAllSelected, - int ichwMinSeg, int ichwLimSeg, - int ichwMinSel, int ichwLimSel); - void CalcHighlightRect(int ichw, - std::vector<Rect> & vrs, std::vector<bool> & vfEntireLineHt, - bool fJustComponent, bool * rgfHighlighted, bool fSkipTrSpace); - void CalcCompleteCluster(int islout, - std::vector<Rect> & vrs, std::vector<bool> & vfEntireLineHt, bool * prgfHighlighted); - void AddRectWithoutOverlaps(std::vector<Rect> & vrect, Rect rectToAdd); - bool AnyArea(Rect * prect); - bool AdjustRectsToNotOverlap(std::vector<Rect> & vrect, int irect, Rect * prect2, - std::vector<Rect> & vrectMoreToAdd); - void AssertNoOverlaps(std::vector<Rect> & vrect); - - void AddLineSegWithoutOverlaps(std::vector<LineSeg> & vls, LineSeg lsToAdd); - bool AnyLength(LineSeg * pls); - bool AdjustLineSegsToNotOverlap(std::vector<LineSeg> & vls, int ils, LineSeg * pls2, - std::vector<LineSeg> & vlsMoreToAdd); - void AssertNoOverlaps(std::vector<LineSeg> & vls); - - GrResult ArrowKeyPositionAux(int * pichwIP, bool * pfAssocPrev, - bool fRight, bool fMovingIn, - bool fAssocPrevMatch, bool fAssocPrevNeeded, - bool * pfResult); - bool ArrowKeyPositionInternal(int * pichw, bool * pfAssocPrev, - bool fRight, bool fAssocPrevMatch, bool fAssocPrevNeeded, int * nNextOrPrevSeg); - bool AdjacentLigComponent(int * pichw, bool * pfAssocPrev, bool fRight, bool fMove); - - int PointToCharAux(float xsTry, float ysTry, - float * pxsGlyphOffset, float * pxsGlyphWidth); - - // Platform-specific routines: - - GrResult DrawSegmentPlatform(float xs, float ys); - - // Low-level routines--these must be implemented appropriate by subclasses: - - virtual void InvertRect(float xLeft, float yTop, float xRight, float yBottom) - { - GrAssert(false); // no device context - } - - //void SetFontProps(); - virtual void SetFontProps(unsigned long clrFore, unsigned long clrBack); - -}; - -/*---------------------------------------------------------------------------------------------- - This is a subclass of SegmentPainter for which the paint operation is unnecessary. -----------------------------------------------------------------------------------------------*/ -class SegmentNonPainter : public SegmentPainter -{ -public: - SegmentNonPainter(Segment * pseg) - : SegmentPainter(pseg) - { - } - - void paint() - { - GrAssert(false); - throw; - } -}; - -} // namespace gr - -#if defined(GR_NO_NAMESPACE) -using namespace gr; -#endif - -#endif // !GR_SEGPAINTER_INCLUDED |