| --- misc/silgraphite-2.3.1/engine/include/graphite/GrCommon.h Thu Jan 22 00:36:40 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/include/graphite/GrCommon.h Sat Aug 22 19:36:32 2009 |
| @@ -18,6 +18,8 @@ |
| #ifndef GRCOMMON_INCLUDED |
| #define GRCOMMON_INCLUDED |
| |
| +#define _SECURE_SCL 0 // to allow GlyphSetIterator to work, which points off the end of a vector |
| +#define _HAS_ITERATOR_DEBUGGING 0 |
| |
| // Standard Headers. |
| |
| @@ -33,6 +35,7 @@ |
| #include <vector> |
| #include <algorithm> |
| #include <string> |
| +///#include <stdexcept> -- possibly needed for std::string Xran and Xlen functions?? |
| |
| // Uncomment this to allow multiple versions of gr to coexist |
| // in the same program e.g. pangographite with gtk uses namespace gr |
| @@ -41,7 +44,7 @@ |
| // Provided the client includes GrClient.h first this #define is |
| // picked up by all files. |
| |
| -//#define gr gr2 |
| +#define gr gr3ooo |
| |
| // Project headers |
| #include "GrPlatform.h" |
| --- misc/silgraphite-2.3.1/engine/include/graphite/GrMstypes.h Thu Jan 22 00:36:40 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/include/graphite/GrMstypes.h Sat Aug 22 19:36:32 2009 |
| @@ -24,11 +24,11 @@ |
| |
| typedef signed long HRESULT; |
| |
| -inline const long InterlockedIncrement(long *const intr_lck) { |
| +inline long InterlockedIncrement(long *const intr_lck) { |
| return ++*intr_lck; |
| } |
| |
| -inline const long InterlockedDecrement(long *const intr_lck) { |
| +inline long InterlockedDecrement(long *const intr_lck) { |
| return --*intr_lck; |
| } |
| |
| --- misc/silgraphite-2.3.1/engine/makefile.vc7 Thu Aug 21 16:24:32 2008 |
| +++ misc/build/silgraphite-2.3.1/engine/makefile.vc7 Sat Aug 22 19:36:32 2009 |
| @@ -48,11 +48,7 @@ |
| CPP_DEBUG=/D "TRACING" $(CPP_DEBUG) |
| !ENDIF |
| |
| -!IF "$(OS)" == "Windows_NT" |
| NULL= |
| -!ELSE |
| -NULL=nul |
| -!ENDIF |
| |
| clean : |
| @- rd /s/q .\release_temp |
| --- misc/silgraphite-2.3.1/engine/makefile.vc8 Sat Aug 22 21:58:25 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/makefile.vc8 Sat Aug 22 21:57:42 2009 |
| @@ -2,11 +2,16 @@ |
| TARGET=graphite |
| |
| CPP=cl.exe |
| -CPPFLAGS=/Zc:wchar_t- /nologo /W4 /GR /EHsc /I "./src/font" /I "./src/painter" /I "./src/segment" /I "./src/textsource" /I "./src/generic" /I "./include/graphite" /I "../wrappers/win32" /D "GR_NAMESPACE" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "TRACING" /Fp"$(INTDIR)\graphite.pch" /Fd"$(INTDIR)\\" /FD /c |
| +### HDU: disabled building with the normal compile flags |
| +###CPPFLAGS= /Zc:wchar_t- /nologo /W4 /GR /EHsc /I "./src/font" /I "./src/painter" /I "./src/segment" /I "./src/textsource" /I "./src/generic" /I "./include/graphite" /I "../wrappers/win32" /D "GR_NAMESPACE" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "TRACING" /Fp"$(INTDIR)\graphite.pch" /Fd"$(INTDIR)\\" /FD /c |
| +### HDU: because for full binary compatibility with the rest of OOo all compile flags must match exactly |
| +### which is especially true for template-heavy C++ code with non-default config (e.g. _STLP_DEBUG enabled) |
| +CPPFLAGS= $(CFLAGS4MSC) /nologo /W4 /I "./src/font" /I "./src/painter" /I "./src/segment" /I "./src/textsource" /I "./src/generic" /I "./include/graphite" /I "../wrappers/win32" /D "GR_NAMESPACE" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "TRACING" /Fp"$(INTDIR)\graphite.pch" /FD /c |
| + |
| # /Wp62 |
| |
| LINK=link.exe |
| -LINK_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /dll /pdb:"$(OUTDIR)\\graphite.pdb" /machine:I386 /out:"$(OUTDIR)\\$(TARGET).dll" /implib:"$(OUTDIR)\\$(TARGET).lib" |
| +LINK_FLAGS=$(ADDLIBS) kernel32.lib user32.lib gdi32.lib winspool.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /dll /pdb:"$(OUTDIR)\\graphite.pdb" /machine:I386 /out:"$(OUTDIR)\\$(TARGET).dll" /implib:"$(OUTDIR)\\$(TARGET).lib" |
| |
| BSC32=bscmake.exe |
| BSC32_FLAGS=/nologo /o"$(OUTDIR)\\$(TARGET).bsc" |
| @@ -24,21 +29,21 @@ |
| SBREXT = .sbr |
| |
| !IF "$(CFG)" == "DEBUG" |
| -CPP_DEBUG=/D "DEBUG" /Gm /GR /ZI /Od /RTC1 /FR"$(INTDIR)\\" /$(MLIB)d |
| +CPP_DEBUG=/D "DEBUG" /Gm /GR /Od /RTC1 /FR"$(INTDIR)\\" |
| # CPP_DEBUG=/D "DEBUG" /Gm /GR /ZI /Od /RTC1 /FR"$(INTDIR)\\" /MDd |
| |
| OUTDIR=.\debug |
| INTDIR=.\debug_temp |
| -LINK_DEBUG= MSVCRTD.lib /debug /incremental:yes #/pdbtype:sept |
| +LINK_DEBUG= /debug |
| |
| all : lib lib_dll bsc |
| |
| !ELSE |
| -CPP_DEBUG=/D "NDEBUG" /O2 /$(MLIB) |
| +CPP_DEBUG=/D "NDEBUG" /O2 |
| # CPP_DEBUG=/D "NDEBUG" /O2 /MD |
| OUTDIR=.\release |
| INTDIR=.\release_temp |
| -LINK_DEBUG= MSVCRT.lib /incremental:no /NODEFAULTLIB:libc |
| +LINK_DEBUG= /incremental:no /NODEFAULTLIB:libc |
| |
| all : lib lib_dll |
| |
| @@ -48,11 +53,7 @@ |
| CPP_DEBUG=/D "TRACING" $(CPP_DEBUG) |
| !ENDIF |
| |
| -!IF "$(OS)" == "Windows_NT" |
| NULL= |
| -!ELSE |
| -NULL=nul |
| -!ENDIF |
| |
| clean : |
| @- rd /s/q .\release_temp |
| @@ -779,7 +780,7 @@ |
| @- $(CPP) $(CPPFLAGS) $(CPP_DEBUG) /Fo"$(INTDIR)\FileFont$(OBJEXT)" $? |
| |
| "$(INTDIR)\FileFont_dll$(OBJEXT)" : "src/font/FileFont.cpp" |
| - @- $(CPP) $(CPPFLAGS) /D "_DLL" /Fo"$(INTDIR)\FileFont_dll$(OBJEXT)" $? |
| + $(CPP) $(CPPFLAGS) /D "_DLL" /Fo"$(INTDIR)\FileFont_dll$(OBJEXT)" $? |
| |
| !ENDIF |
| |
| --- misc/silgraphite-2.3.1/engine/src/font/FileFont.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/font/FileFont.cpp Sat Aug 22 19:36:32 2009 |
| @@ -207,11 +207,11 @@ |
| cch16 += cch16Used; |
| } |
| // } |
| -#else |
| +#elif 1 |
| m_stuFaceName.assign(rgchwFace); |
| - // VS 2005 needs this: |
| - //for (int cch16 = 0; cch16 < cchw; cch16++) |
| - // m_stuFaceName.push_back(rgchwFace[cch16]); |
| +#else // VS 2005 needs this: |
| + for (int cch16 = 0; cch16 < cchw; cch16++) |
| + m_stuFaceName.push_back(rgchwFace[cch16]); |
| #endif |
| pTable = readTable(ktiHead, lSize); |
| if (!m_fIsValid || !pTable) |
| @@ -233,7 +233,7 @@ |
| FileFont::readTable(int /*TableId*/ tid, size_t & size) |
| { |
| const TableId tableId = TableId(tid); |
| - bool isValid = true; |
| + bool isTableValid = true; |
| size_t lOffset = 0, lSize = 0; |
| if (!m_pTableCache) |
| { |
| @@ -245,9 +245,9 @@ |
| size = m_pTableCache->getTableSize(tableId); |
| // check whether it is already in the cache |
| if (pTable) return pTable; |
| - isValid &= TtfUtil::GetTableInfo(tableId, m_pHeader, m_pTableDir, |
| + isTableValid &= TtfUtil::GetTableInfo(tableId, m_pHeader, m_pTableDir, |
| lOffset, lSize); |
| - if (!isValid) |
| + if (!isTableValid) |
| return NULL; |
| fseek(m_pfile, lOffset, SEEK_SET); |
| // only allocate if needed |
| @@ -255,16 +255,16 @@ |
| |
| if (!pTable) |
| { |
| - isValid = false; |
| + isTableValid = false; |
| return NULL; |
| } |
| size_t bytesRead = fread(pTable, 1, lSize, m_pfile); |
| - isValid = bytesRead == lSize; |
| - if (isValid) |
| + isTableValid = bytesRead == lSize; |
| + if (isTableValid) |
| { |
| - isValid &= TtfUtil::CheckTable(tableId, pTable, lSize); |
| + isTableValid &= TtfUtil::CheckTable(tableId, pTable, lSize); |
| } |
| - if (!isValid) |
| + if (!isTableValid) |
| { |
| return 0; |
| } |
| --- misc/silgraphite-2.3.1/engine/src/font/Font.cpp Tue May 20 08:04:16 2008 |
| +++ misc/build/silgraphite-2.3.1/engine/src/font/Font.cpp Sat Aug 22 19:36:33 2009 |
| @@ -626,7 +626,7 @@ |
| Assert(false); |
| m_ifeat = m_cfeat; |
| } |
| - else if (m_ifeat + n < 0) |
| + else if (static_cast<int>(m_ifeat) + n < 0) |
| { |
| // Can't decrement. |
| Assert(false); |
| @@ -727,7 +727,7 @@ |
| Assert(false); |
| m_ifset = m_cfset; |
| } |
| - if (m_ifset + n < 0) |
| + if (static_cast<int>(m_ifset) + n < 0) |
| { |
| // Can't decrement. |
| Assert(false); |
| @@ -820,7 +820,7 @@ |
| Assert(false); |
| m_ilang = m_clang; |
| } |
| - else if (m_ilang + n < 0) |
| + else if (static_cast<int>(m_ilang) + n < 0) |
| { |
| // Can't decrement. |
| Assert(false); |
| @@ -906,7 +906,7 @@ |
| Assert(false); |
| m_ilang = m_clang; |
| } |
| - else if (m_ilang + n < 0) |
| + else if (static_cast<int>(m_ilang) + n < 0) |
| { |
| // Can't decrement. |
| Assert(false); |
| --- misc/silgraphite-2.3.1/engine/src/font/TtfUtil.cpp Thu Jan 29 10:33:19 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/font/TtfUtil.cpp Sat Aug 22 19:36:33 2009 |
| @@ -492,7 +492,7 @@ |
| const Sfnt::FontHeader * pTable = |
| reinterpret_cast<const Sfnt::FontHeader *>(pHead); |
| |
| - return read(((pTable->mac_style) & 0x00000002) != 0); |
| + return ((read(pTable->mac_style) & 0x00000002) != 0); |
| } |
| |
| /*---------------------------------------------------------------------------------------------- |
| @@ -1108,8 +1108,8 @@ |
| { // loca entries are two bytes and have been divided by two |
| if (nGlyphId <= (lLocaSize >> 1) - 1) // allow sentinel value to be accessed |
| { |
| - const uint16 * pTable = reinterpret_cast<const uint16 *>(pLoca); |
| - return (read(pTable[nGlyphId]) << 1); |
| + const uint16 * pTableLoca = reinterpret_cast<const uint16 *>(pLoca); |
| + return (read(pTableLoca[nGlyphId]) << 1); |
| } |
| } |
| |
| @@ -1117,8 +1117,8 @@ |
| { // loca entries are four bytes |
| if (nGlyphId <= (lLocaSize >> 2) - 1) |
| { |
| - const uint32 * pTable = reinterpret_cast<const uint32 *>(pLoca); |
| - return read(pTable[nGlyphId]); |
| + const uint32 * pTableLoca = reinterpret_cast<const uint32 *>(pLoca); |
| + return read(pTableLoca[nGlyphId]); |
| } |
| } |
| |
| @@ -1586,7 +1586,7 @@ |
| |
| for (size_t i = 0; i < cCompId; i++) |
| { |
| - void * pSimpleGlyf = GlyfLookup(static_cast<gr::gid16>(rgnCompId[i]), |
| + pSimpleGlyf = GlyfLookup(static_cast<gr::gid16>(rgnCompId[i]), |
| pGlyf, pLoca, lLocaSize, pHead); |
| if (pSimpleGlyf == NULL) {return false;} |
| |
| @@ -1748,7 +1748,7 @@ |
| ----------------------------------------------------------------------------------------------*/ |
| bool GlyfPoints(gr::gid16 nGlyphId, const void * pGlyf, |
| const void * pLoca, size_t lLocaSize, const void * pHead, |
| - const int * prgnContourEndPoint, size_t cnEndPoints, |
| + const int * /*prgnContourEndPoint*/, size_t /*cnEndPoints*/, |
| int * prgnX, int * prgnY, bool * prgfOnCurve, size_t cnPoints) |
| { |
| std::fill_n(prgnX, cnPoints, INT_MAX); |
| --- misc/silgraphite-2.3.1/engine/src/painter/SegmentPainter.cpp Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/painter/SegmentPainter.cpp Sat Aug 22 19:36:33 2009 |
| @@ -353,7 +353,7 @@ |
| @param bOn - true if we are turning on (ignored in this implementation) |
| ----------------------------------------------------------------------------------------------*/ |
| bool SegmentPainter::drawSelectionRange(int ichwAnchor, int ichwEnd, |
| - float ydLineTop, float ydLineBottom, bool bOn) |
| + float ydLineTop, float ydLineBottom, bool /*bOn*/) |
| { |
| if (g_fDrawing) |
| return true; |
| @@ -993,7 +993,7 @@ |
| an I-beam (std selection) |
| ----------------------------------------------------------------------------------------------*/ |
| void SegmentPainter::CalcOrDrawInsertionPoint( |
| - int ichwIP, bool fAssocPrev, bool bOn, bool fForceSplit, |
| + int ichwIP, bool fAssocPrev, bool /*bOn*/, bool fForceSplit, |
| Rect * prdPrimary, Rect * prdSecondary) |
| { |
| GrResult res = kresOk; |
| @@ -1277,7 +1277,7 @@ |
| if NULL, do the drawing |
| ----------------------------------------------------------------------------------------------*/ |
| void SegmentPainter::InvertIBeam(float xs, float ysTop, float ysBottom, |
| - bool fAssocPrev, Rect * prdRet) |
| + bool /*fAssocPrev*/, Rect * prdRet) |
| { |
| float xd = ScaleXToDest(xs); |
| float ydTop = ScaleYToDest(ysTop); |
| @@ -1675,7 +1675,7 @@ |
| } |
| |
| bool SegmentPainter::AtEdgeOfCluster(GrSlotOutput * psloutBase, int isloutBase, |
| - GrSlotOutput * pslout, int islout, bool fBefore) |
| + GrSlotOutput * /*pslout*/, int islout, bool fBefore) |
| { |
| // Compare pslout to all the members of the cluster. If it is the minimum or maximum, it |
| // is at an edge. |
| @@ -1778,12 +1778,12 @@ |
| } |
| for (icomp = 0; icomp < pslout->NumberOfComponents(); icomp++) |
| { |
| - for (int ichw = pslout->FirstUnderlyingComponent(icomp) ; |
| - ichw <= pslout->LastUnderlyingComponent(icomp) ; |
| - ichw++) |
| + for (int ichwTemp = pslout->FirstUnderlyingComponent(icomp) ; |
| + ichwTemp <= pslout->LastUnderlyingComponent(icomp) ; |
| + ichwTemp++) |
| { |
| - if (m_pseg->m_prgiComponent[ichw - m_pseg->m_ichwAssocsMin] == icomp) |
| - prgfAllSelected[ichw] = fAll; |
| + if (m_pseg->m_prgiComponent[ichwTemp - m_pseg->m_ichwAssocsMin] == icomp) |
| + prgfAllSelected[ichwTemp] = fAll; |
| } |
| } |
| } |
| @@ -2304,7 +2304,11 @@ |
| Assert that there are no overlaps among all the rectangles in the array, which should |
| be the case if AdjustRectsToNotOverlap is working properly. |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef _DEBUG |
| void SegmentPainter::AssertNoOverlaps(std::vector<Rect> & vrect) |
| +#else |
| +void SegmentPainter::AssertNoOverlaps(std::vector<Rect> & /*vrect*/) |
| +#endif |
| { |
| #ifdef _DEBUG |
| for (int irect1 = 0; irect1 < signed(vrect.size() - 1); irect1++) |
| @@ -2452,7 +2456,11 @@ |
| Assert that there are no overlaps among all the rectangles in the array, which should |
| be the case if AdjustRectsToNotOverlap is working properly. |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef _DEBUG |
| void SegmentPainter::AssertNoOverlaps(std::vector<LineSeg> & vls) |
| +#else |
| +void SegmentPainter::AssertNoOverlaps(std::vector<LineSeg> & /*vls*/) |
| +#endif |
| { |
| #ifdef _DEBUG |
| for (int ils1 = 0; ils1 < (int)vls.size() - 1; ils1++) |
| @@ -2884,7 +2892,7 @@ |
| { |
| if (icompNext != icompCurr) |
| { |
| - float xsHorizNext = (fIPOnRight) ? vxsRights[icompNext] : vxsLefts[icompNext]; |
| + xsHorizNext = (fIPOnRight) ? vxsRights[icompNext] : vxsLefts[icompNext]; |
| if (fMovingRight && xsHorizNext > xsHorizCurr) |
| break; |
| else if (!fMovingRight && xsHorizNext < xsHorizCurr) |
| @@ -2996,7 +3004,7 @@ |
| /*---------------------------------------------------------------------------------------------- |
| Make sure the font is set to use the character properties required by this segment. |
| ----------------------------------------------------------------------------------------------*/ |
| -void SegmentPainter::SetFontProps(unsigned long clrFore, unsigned long clrBack) |
| +void SegmentPainter::SetFontProps(unsigned long /*clrFore*/, unsigned long /*clrBack*/) |
| { |
| return; |
| } |
| --- misc/silgraphite-2.3.1/engine/src/segment/FileInput.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/FileInput.cpp Sat Aug 22 19:36:33 2009 |
| @@ -80,7 +80,7 @@ |
| #ifdef GR_FW |
| bool GrBufferIStream::Open(std::wstring stuFileName, int kMode) |
| #else |
| -bool GrBufferIStream::Open(const char * pcFileName, std::ios::openmode kMode) |
| +bool GrBufferIStream::Open(const char * /*pcFileName*/, std::ios::openmode /*kMode*/) |
| #endif |
| { |
| Assert(false); // use OpenBuffer |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrCharStream.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrCharStream.cpp Sat Aug 22 19:36:33 2009 |
| @@ -417,8 +417,11 @@ |
| return true; |
| */ |
| } |
| - |
| +#ifdef NDEBUG |
| +bool GrCharStream::AtUnicodeCharBoundary(utf8 * prgchs, int cchs, int ichs, UtfType /*utf*/) |
| +#else |
| bool GrCharStream::AtUnicodeCharBoundary(utf8 * prgchs, int cchs, int ichs, UtfType utf) |
| +#endif |
| { |
| Assert(ichs >= 0); |
| Assert(ichs <= cchs); |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrClassTable.h Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrClassTable.h Sat Aug 22 19:36:33 2009 |
| @@ -54,7 +54,11 @@ |
| /*------------------------------------------------------------------------------------------ |
| Copy the raw memory into the instance. |
| ------------------------------------------------------------------------------------------*/ |
| +#ifdef NDEBUG |
| + void CopyFrom(data16 * pchwStart, int /*cchw*/) |
| +#else |
| void CopyFrom(data16 * pchwStart, int cchw) |
| +#endif |
| { |
| m_cgixBIG = pchwStart[0]; |
| m_digixBIGInit = pchwStart[1]; |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrEngine.cpp Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrEngine.cpp Sat Aug 22 19:36:33 2009 |
| @@ -159,12 +159,12 @@ |
| GrEngine::~GrEngine() |
| { |
| DestroyEverything(); |
| - #ifdef _MSC_VER |
| - if (!_CrtCheckMemory()) |
| - { |
| - OutputDebugString(L"bad memory"); |
| - } |
| - #endif |
| +// #ifdef _MSC_VER |
| +// if (!_CrtCheckMemory()) |
| +// { |
| +// OutputDebugString(L"bad memory"); |
| +// } |
| +// #endif |
| } |
| |
| /*---------------------------------------------------------------------------------------------- |
| @@ -173,12 +173,12 @@ |
| void GrEngine::DestroyEverything() |
| { |
| DestroyContents(); |
| - #ifdef _MSC_VER |
| - if (!_CrtCheckMemory()) |
| - { |
| - OutputDebugString(L"bad memory"); |
| - } |
| - #endif |
| +// #ifdef _MSC_VER |
| +// if (!_CrtCheckMemory()) |
| +// { |
| +// OutputDebugString(L"bad memory"); |
| +// } |
| +// #endif |
| |
| m_strCtrlFileReg.erase(); |
| m_strCtrlFileBold.erase(); |
| @@ -417,7 +417,11 @@ |
| @return The supported script direction(s). If more than one, the application is |
| responsible for choosing the most appropriate. |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef NDEBUG |
| +GrResult GrEngine::get_ScriptDirection(unsigned int * pgrfsdc, OLECHAR * /*prgchwErrMsg*/, int /*cchMaxErrMsg*/) |
| +#else |
| GrResult GrEngine::get_ScriptDirection(unsigned int * pgrfsdc, OLECHAR * prgchwErrMsg, int cchMaxErrMsg) |
| +#endif |
| { |
| ChkGrOutPtr(pgrfsdc); |
| ChkGrArrayArg(prgchwErrMsg, cchMaxErrMsg); |
| @@ -789,7 +793,7 @@ |
| Record a system error indicating a bad error in rendering using a supposedly valid font. |
| OBSOLETE |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrEngine::RecordFontRunError(OLECHAR * prgchwErrMsg, int cchMax, GrResult res) |
| +void GrEngine::RecordFontRunError(OLECHAR * prgchwErrMsg, int cchMax, GrResult /*res*/) |
| { |
| if (prgchwErrMsg == NULL || cchMax == 0) |
| return; |
| @@ -970,7 +974,7 @@ |
| /*---------------------------------------------------------------------------------------------- |
| Return whether the text is asking for bold and/or italic text. |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrEngine::GetStyles(Font * pfont, int ichwMin, bool * pfBold, bool * pfItalic) |
| +void GrEngine::GetStyles(Font * pfont, int /*ichwMin*/, bool * pfBold, bool * pfItalic) |
| { |
| *pfBold = pfont->bold(); |
| *pfItalic = pfont->italic(); |
| @@ -981,7 +985,11 @@ |
| Should only be called when we know we are using a base font, or when we are reading |
| the base font to see if it is valid. |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef NDEBUG |
| +void GrEngine::SwitchGraphicsFont(bool /*fBase*/) |
| +#else |
| void GrEngine::SwitchGraphicsFont(bool fBase) |
| +#endif |
| { |
| Assert(!fBase || m_stuBaseFaceName.size() > 0); |
| |
| @@ -1135,7 +1143,7 @@ |
| m_chwJShrink0 = 0xffff; |
| m_chwJStep0 = 0xffff; |
| m_chwJWeight0 = 0xffff; |
| - for (int i = 0; i < m_cJLevels; i++) |
| + for (i = 0; i < m_cJLevels; i++) |
| { |
| // justification glyph attribute IDs |
| bTmp = grstrm.ReadByteFromFont(); |
| @@ -1210,10 +1218,12 @@ |
| |
| // rendering behaviors--ignore for now |
| byte cBehaviors = grstrm.ReadByteFromFont(); |
| - unsigned int nBehaviors[kMaxRenderingBehavior]; |
| + int nTmp; |
| + //unsigned int nBehaviors[kMaxRenderingBehavior]; -- this big buffer causes a stack overflow in Multiscribe; rework eventually |
| for (i = 0; i < cBehaviors; i++) |
| { |
| - nBehaviors[i] = unsigned(grstrm.ReadIntFromFont()); |
| + //nBehaviors[i] = unsigned(grstrm.ReadIntFromFont()); |
| + nTmp = unsigned(grstrm.ReadIntFromFont()); |
| } |
| |
| // linebreak glyph ID |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrFSM.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrFSM.cpp Sat Aug 22 19:36:33 2009 |
| @@ -46,7 +46,7 @@ |
| Fill in the FSM by reading from the font stream. |
| Assumes the stream is in the correct position. |
| ----------------------------------------------------------------------------------------------*/ |
| -bool GrFSM::ReadFromFont(GrIStream & grstrm, int fxdVersion) |
| +bool GrFSM::ReadFromFont(GrIStream & grstrm, int /*fxdVersion*/) |
| { |
| short snTmp; |
| |
| @@ -138,7 +138,7 @@ |
| Fill in the FSM's state table by reading from the font stream. |
| Assumes the stream is in the correct position. |
| ----------------------------------------------------------------------------------------------*/ |
| -bool GrFSM::ReadStateTableFromFont(GrIStream & grstrm, int fxdVersion) |
| +bool GrFSM::ReadStateTableFromFont(GrIStream & grstrm, int /*fxdVersion*/) |
| { |
| int cCells = ((m_crow - m_crowFinal) * m_ccol); |
| m_prgrowTransitions = new short[cCells]; |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrFeature.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrFeature.cpp Sat Aug 22 19:36:33 2009 |
| @@ -186,7 +186,7 @@ |
| /*---------------------------------------------------------------------------------------------- |
| Read the languages from the font. |
| ----------------------------------------------------------------------------------------------*/ |
| -bool GrLangTable::ReadFromFont(GrIStream * pgrstrm, int fxdVersion) |
| +bool GrLangTable::ReadFromFont(GrIStream * pgrstrm, int /*fxdVersion*/) |
| { |
| GrIStream & grstrm = *pgrstrm; |
| |
| @@ -206,13 +206,22 @@ |
| |
| m_cbOffset0 = (lsbf)(m_prglang[0].cbOffsetBIG); |
| |
| - Assert((lsbf)(m_prglang[m_clang].cFeaturesBIG) == 0); // bogus entry has no settings |
| + if ((lsbf)(m_prglang[m_clang].cFeaturesBIG) == 0) // bogus entry has no settings |
| + { |
| cb = (lsbf)(m_prglang[m_clang].cbOffsetBIG) - m_cbOffset0; |
| - Assert(cb % sizeof(FeatSet) == 0); // # of bytes fits nicely into FeatSet class |
| + if (cb % sizeof(FeatSet) == 0) // # of bytes fits nicely into FeatSet class |
| + { |
| int cfset = cb / sizeof(FeatSet); |
| m_prgfset = new FeatSet[cfset]; |
| m_cfset = cfset; |
| grstrm.ReadBlockFromFont(m_prgfset, cb); |
| + } |
| + else return false; |
| + } |
| + else |
| + { |
| + return false; |
| + } |
| |
| return true; |
| } |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrPass.cpp Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrPass.cpp Sat Aug 22 19:36:34 2009 |
| @@ -279,9 +279,10 @@ |
| @param twsh - how we are handling trailing white-space |
| @param pnRet - return value |
| @param pcslotGot - return the number of slots gotten |
| - @param pislotFinalBreak - return the index of the final slot, when we are removing |
| - the trailing white-space and so the end of the segment |
| - will be before the any actual line-break slot |
| + @param pislotFinalBreak - index of the final slot (LB or actual glyph), or -1; |
| + adjusted when we are removing the trailing white-space and |
| + so the end of the segment will be before the any actual |
| + line-break slot |
| |
| @return kNextPass if we were able to generated the number requested, or processing is |
| complete; otherwise return the number of slots needed from the previous pass. |
| @@ -465,7 +466,7 @@ |
| void GrBidiPass::ExtendOutput(GrTableManager * ptman, |
| GrSlotStream* psstrmIn, GrSlotStream* psstrmOut, |
| int cslotNeededByNext, TrWsHandling twsh, |
| - int * pnRet, int * pcslotGot, int * pislotFinalBreak) |
| + int * pnRet, int * pcslotGot, int * /*pislotFinalBreak*/) |
| { |
| Assert(psstrmIn->SlotsToReprocess() == 0); |
| |
| @@ -776,7 +777,7 @@ |
| int GrPass::ExtendFinalOutput(GrTableManager * ptman, |
| GrSlotStream * psstrmInput, GrSlotStream * psstrmOutput, |
| float xsSpaceAllotted, bool fWidthIsCharCount, bool fInfiniteWidth, |
| - bool fHaveLineBreak, bool fMustBacktrack, LineBrk lbMax, TrWsHandling twsh, |
| + bool fHaveLineBreak, bool fMustBacktrack, LineBrk /*lbMax*/, TrWsHandling twsh, |
| int * pislotLB, float * pxsWidth) |
| { |
| EngineState * pengst = ptman->State(); |
| @@ -897,7 +898,11 @@ |
| Remove undesirable trailing white-space. |
| ----------------------------------------------------------------------------------------------*/ |
| int GrPass::RemoveTrailingWhiteSpace(GrTableManager * ptman, GrSlotStream * psstrmOut, |
| +#ifdef NDEBUG |
| + TrWsHandling /*twsh*/, int * pislotFinalBreak) |
| +#else |
| TrWsHandling twsh, int * pislotFinalBreak) |
| +#endif |
| { |
| EngineState * pengst = ptman->State(); |
| |
| @@ -944,7 +949,7 @@ |
| should never be necessary if they've set up their tables right. |
| ----------------------------------------------------------------------------------------------*/ |
| void GrPass::CheckInputProgress(GrSlotStream * psstrmInput, GrSlotStream * psstrmOutput, |
| - int islotOrigInput) |
| + int /*islotOrigInput*/) |
| { |
| int islotInput = psstrmInput->ReadPosForNextGet(); |
| // Assert(islotInput >= islotOrigInput); -- no longer true now that we can back up |
| @@ -1752,7 +1757,7 @@ |
| ----------------------------------------------------------------------------------------------*/ |
| int GrPass::Unwind(GrTableManager * ptman, |
| int islotChanged, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut, |
| - bool fFirst) |
| + bool /*fFirst*/) |
| { |
| // Back up the number of slots required for the longest rule context, |
| // but if we land in the middle of a chunk, go forward to its boundary. |
| @@ -1824,7 +1829,7 @@ |
| ----------------------------------------------------------------------------------------------*/ |
| int GrBidiPass::Unwind(GrTableManager * ptman, |
| int islotChanged, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut, |
| - bool fFirst) |
| + bool /*fFirst*/) |
| { |
| int islotIn; |
| int islotOut; |
| @@ -1901,8 +1906,8 @@ |
| OBSOLETE |
| ----------------------------------------------------------------------------------------------*/ |
| //:Ignore |
| -void GrPosPass::Unattach(GrSlotStream * psstrmIn, int islotIn, |
| - GrSlotStream * psstrmOut, int islotOut, int islotLB) |
| +void GrPosPass::Unattach(GrSlotStream * /*psstrmIn*/, int /*islotIn*/, |
| + GrSlotStream * /*psstrmOut*/, int /*islotOut*/, int /*islotLB*/) |
| { |
| // Because this is a positioning pass, there is a one-to-one correspondence between |
| // the slots in the input and the slots in the output. Thus we can make simplifying |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrPass.h Thu Aug 21 16:24:32 2008 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrPass.h Sat Aug 22 19:36:34 2009 |
| @@ -197,7 +197,7 @@ |
| bool ReadFromFont(GrIStream & grstrm, int fxdSilfVersion, int fxdRuleVersion, int nOffset); |
| void InitializeWithNoRules(); |
| |
| - virtual void SetTopDirLevel(int n) |
| + virtual void SetTopDirLevel(int /*n*/) |
| { // only GrBidiPass does anything interesting |
| } |
| |
| @@ -253,13 +253,13 @@ |
| m_pzpst->SetResyncSkip(n); |
| } |
| |
| - virtual void DoCleanUpSegMin(GrTableManager * ptman, |
| - GrSlotStream * psstrmIn, int islotInitReadPos, GrSlotStream * psstrmOut) |
| + virtual void DoCleanUpSegMin(GrTableManager * /*ptman*/, |
| + GrSlotStream * /*psstrmIn*/, int /*islotInitReadPos*/, GrSlotStream * /*psstrmOut*/) |
| { |
| } |
| |
| - virtual void DoCleanUpSegLim(GrTableManager * ptman, GrSlotStream * psstrmOut, |
| - TrWsHandling twsh) |
| + virtual void DoCleanUpSegLim(GrTableManager * /*ptman*/, GrSlotStream * /*psstrmOut*/, |
| + TrWsHandling /*twsh*/) |
| { |
| } |
| |
| @@ -383,8 +383,8 @@ |
| void MapChunks(GrSlotStream * psstrmIn, GrSlotStream * psstrmOut, |
| int islotChunkI, int islotChunkO, int cslotReprocessed); |
| |
| - virtual void Unattach(GrSlotStream * psstrmIn, int islotIn, // GrPosPass overrides |
| - GrSlotStream * psstrmOut, int islotOut, int islotLB) |
| + virtual void Unattach(GrSlotStream * /*psstrmIn*/, int /*islotIn*/, // GrPosPass overrides |
| + GrSlotStream * /*psstrmOut*/, int /*islotOut*/, int /*islotLB*/) |
| { |
| } |
| |
| @@ -500,8 +500,8 @@ |
| |
| protected: |
| // Irrelevant when generating glyphs. |
| - virtual void RunRule(GrTableManager *, int ruln, |
| - GrSlotStream * psstrmInput, GrSlotStream * psstrmOutput) |
| + virtual void RunRule(GrTableManager *, int /*ruln*/, |
| + GrSlotStream * /*psstrmInput*/, GrSlotStream * /*psstrmOutput*/) |
| { |
| Assert(false); |
| } |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrPassActionCode.cpp Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrPassActionCode.cpp Sat Aug 22 19:36:34 2009 |
| @@ -632,8 +632,13 @@ |
| /*---------------------------------------------------------------------------------------------- |
| We are finished processing a slot; go on to the next slot, or possibly go backwards. |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrPass::DoNext(GrTableManager * ptman, |
| - int cslot, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| +#ifdef NDEBUG |
| +void GrPass::DoNext(GrTableManager * /*ptman*/, |
| + int /*cslot*/, GrSlotStream * /*psstrmIn*/, GrSlotStream * /*psstrmOut*/) |
| +#else |
| +void GrPass::DoNext(GrTableManager * /*ptman*/, |
| + int cslot, GrSlotStream * /*psstrmIn*/, GrSlotStream * /*psstrmOut*/) |
| +#endif |
| { |
| gAssert(cslot == 1); // for now anyway |
| } |
| @@ -690,6 +695,7 @@ |
| psstrmOut->SetSegMinToWritePos(false); |
| if (fSetSegLim) |
| psstrmOut->SetSegLimToWritePos(false); |
| + //gid16 chw; chw = pslotNew->GlyphID(); |
| psstrmOut->NextPut(pslotNew); |
| } |
| |
| @@ -729,6 +735,7 @@ |
| psstrmOut->SetSegMinToWritePos(false); |
| if (fSetSegLim) |
| psstrmOut->SetSegLimToWritePos(false); |
| + //gid16 chw; chw = pslotNew->GlyphID(); |
| psstrmOut->NextPut(pslotNew); |
| } |
| |
| @@ -825,7 +832,7 @@ |
| @param psstrmIn / Out - input/output streams |
| ----------------------------------------------------------------------------------------------*/ |
| void GrPass::DoPutSubs3(GrTableManager * ptman, bool fInserting, |
| - int cslotSel1, int nSelClass1, int cslotSel2, int nSelClass2, int cslotSel3, int nSelClass3, |
| + int cslotSel1, int nSelClass1, int cslotSel2, int nSelClass2, int /*cslotSel3*/, int nSelClass3, |
| int nReplacementClass, |
| GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| { |
| @@ -888,7 +895,7 @@ |
| Common part of all the DoPutSubs... methods. |
| ----------------------------------------------------------------------------------------------*/ |
| void GrPass::DoPutSubsAux(GrTableManager * ptman, bool fInserting, gid16 nGlyphReplacement, |
| - GrSlotStream * psstrmIn, GrSlotStream * psstrmOut, GrSlotState * pslotNextInput, |
| + GrSlotStream * /*psstrmIn*/, GrSlotStream * psstrmOut, GrSlotState * pslotNextInput, |
| bool fAtSegMin, bool fAtSegLim) |
| { |
| EngineState * pengst = ptman->State(); |
| @@ -915,6 +922,7 @@ |
| psstrmOut->SetSegMinToWritePos(false); |
| if (fSetSegLim) |
| psstrmOut->SetSegLimToWritePos(false); |
| + //gid16 chw; chw = pslotNew->GlyphID(); |
| psstrmOut->NextPut(pslotNew); |
| } |
| |
| @@ -924,7 +932,7 @@ |
| and its after-assoc to the slot before it. This makes it basically unselectable. |
| OBSOLETE - handled by slot initialization code |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrPass::SetNeutralAssocs(GrSlotState * pslotNew, GrSlotStream * psstrmIn) |
| +void GrPass::SetNeutralAssocs(GrSlotState * pslotNew, GrSlotStream * /*psstrmIn*/) |
| { |
| pslotNew->ClearAssocs(); |
| } |
| @@ -943,6 +951,7 @@ |
| psstrmOut->SetSegLimToWritePos(); |
| |
| GrSlotState * pslot = psstrmIn->NextGet(); |
| + //gid16 chw; chw = pslotNew->GlyphID(); |
| pslot->MarkDeleted(); |
| |
| if (ptman->LoggingTransduction()) |
| @@ -957,7 +966,7 @@ |
| @param fInserting - whether current slot was inserted |
| @param psstrmIn / Out - input/output streams |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrPass::DoAssoc(int cnAssocs, std::vector<int> & vnAssocs, bool fInserting, |
| +void GrPass::DoAssoc(int cnAssocs, std::vector<int> & vnAssocs, bool /*fInserting*/, |
| GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| { |
| gAssert((unsigned)cnAssocs == vnAssocs.size()); |
| @@ -997,7 +1006,11 @@ |
| @param vnStack - stack to read value from |
| @param psstrmIn / Out - input/output streams |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef NDEBUG |
| +void GrPass::DoSetAttr(GrTableManager * ptman, ActionCommand op, bool /*fInserting*/, |
| +#else |
| void GrPass::DoSetAttr(GrTableManager * ptman, ActionCommand op, bool fInserting, |
| +#endif |
| SlotAttrName slat, int slati, std::vector<int> & vnStack, |
| GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| { |
| @@ -1192,7 +1205,7 @@ |
| @param psstrmIn - input stream |
| ----------------------------------------------------------------------------------------------*/ |
| void GrPass::DoPushSlotAttr(GrTableManager * ptman, |
| - int nSlotRef, bool fInserting, |
| + int nSlotRef, bool /*fInserting*/, |
| SlotAttrName slat, int slati, std::vector<int> & vnStack, |
| GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| { |
| @@ -1236,16 +1249,16 @@ |
| |
| case kslatAttTo: nVal = pslot->AttachTo(); break; |
| case kslatAttLevel: nVal = pslot->AttachLevel(); break; |
| - case kslatAttAtX: nVal = pslot->AttachAtX(ptman, psstrmIn); break; |
| case kslatAttAtY: nVal = pslot->AttachAtY(); break; |
| case kslatAttAtGpt: nVal = pslot->AttachAtGpoint(); break; |
| case kslatAttAtXoff: nVal = pslot->AttachAtXOffset(); break; |
| case kslatAttAtYoff: nVal = pslot->AttachAtYOffset(); break; |
| - case kslatAttWithX: nVal = pslot->AttachWithX(ptman, psstrmIn); break; |
| case kslatAttWithY: nVal = pslot->AttachWithY(); break; |
| case kslatAttWithGpt: nVal = pslot->AttachWithGpoint(); break; |
| case kslatAttWithXoff: nVal = pslot->AttachWithXOffset(); break; |
| case kslatAttWithYoff: nVal = pslot->AttachWithYOffset(); break; |
| + case kslatAttAtX: nVal = pslot->AttachAtX(ptman, psstrmIn); break; |
| + case kslatAttWithX: nVal = pslot->AttachWithX(ptman, psstrmIn); break; |
| |
| case kslatMeasureSol: nVal = pslot->MeasureSol(); break; |
| case kslatMeasureEol: nVal = pslot->MeasureEol(); break; |
| @@ -1282,7 +1295,7 @@ |
| @param vnStack - stack to push onto |
| @param psstrmIn - input stream |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrPass::DoPushGlyphAttr(GrTableManager * ptman, int nSlotRef, bool fInserting, |
| +void GrPass::DoPushGlyphAttr(GrTableManager * ptman, int nSlotRef, bool /*fInserting*/, |
| int nGlyphAttr, |
| std::vector<int> & vnStack, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| { |
| @@ -1307,7 +1320,7 @@ |
| @param vnStack - stack to push onto |
| @param psstrmIn - input stream |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrPass::DoPushAttToGlyphAttr(GrTableManager * ptman, int nSlotRef, bool fInserting, |
| +void GrPass::DoPushAttToGlyphAttr(GrTableManager * ptman, int nSlotRef, bool /*fInserting*/, |
| int nGlyphAttr, std::vector<int> & vnStack, |
| GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| { |
| @@ -1337,7 +1350,7 @@ |
| @param vnStack - stack to push onto |
| @param psstrmIn - input stream |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrPass::DoPushGlyphMetric(GrTableManager * ptman, int nSlotRef, bool fInserting, |
| +void GrPass::DoPushGlyphMetric(GrTableManager * ptman, int nSlotRef, bool /*fInserting*/, |
| int nGlyphAttr, int nAttLevel, |
| std::vector<int> & vnStack, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| { |
| @@ -1364,7 +1377,7 @@ |
| @param psstrmIn - input stream |
| @param psstrmOut - output stream |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrPass::DoPushAttToGlyphMetric(GrTableManager * ptman, int nSlotRef, bool fInserting, |
| +void GrPass::DoPushAttToGlyphMetric(GrTableManager * ptman, int nSlotRef, bool /*fInserting*/, |
| int nGlyphAttr, int nAttLevel, |
| std::vector<int> & vnStack, |
| GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| @@ -1399,7 +1412,7 @@ |
| } |
| else |
| { |
| - pslot->CalcCompositeMetrics(ptman, psstrmIn, nAttLevel, true); |
| + pslot->CalcCompositeMetrics(ptman, psstrmIn, NULL, nAttLevel, true); |
| |
| float xy; |
| switch (gmet) |
| @@ -1435,7 +1448,11 @@ |
| @param psstrmIn - input stream |
| @param psstrmOut - output stream |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrPass::DoPushFeatValue(GrTableManager * ptman, int nSlotRef, bool fInserting, |
| +#ifdef NDEBUG |
| +void GrPass::DoPushFeatValue(GrTableManager * /*ptman*/, int nSlotRef, bool /*fInserting*/, |
| +#else |
| +void GrPass::DoPushFeatValue(GrTableManager * /*ptman*/, int nSlotRef, bool fInserting, |
| +#endif |
| int nFeat, std::vector<int> & vnStack, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut) |
| { |
| gAssert(!fInserting); |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrSlotState.cpp Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotState.cpp Sat Aug 22 19:36:34 2009 |
| @@ -261,7 +261,7 @@ |
| root or attached leaf slots. |
| OBSOLETE |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrSlotState::FixAttachmentTree(GrSlotState * pslotOld) |
| +void GrSlotState::FixAttachmentTree(GrSlotState * /*pslotOld*/) |
| { |
| #if 0 |
| pslotOld->m_vpslotAttLeaves.CopyTo(m_vpslotAttLeaves); |
| @@ -524,13 +524,13 @@ |
| GrSlotState * pslot; |
| if (HasComponents()) |
| { |
| - for (int iComponent = 0; iComponent < m_cnCompPerLig; iComponent++) |
| + for (int iLigComponent = 0; iLigComponent < m_cnCompPerLig; iLigComponent++) |
| { |
| - pslot = CompRefSlot(iComponent); |
| + pslot = CompRefSlot(iLigComponent); |
| if (pslot) |
| { |
| Assert(PassModified() >= pslot->PassModified()); |
| - pslot->AllComponentRefs(vichw, vicomp, iComponent); |
| + pslot->AllComponentRefs(vichw, vicomp, iLigComponent); |
| } |
| } |
| } |
| @@ -1024,7 +1024,7 @@ |
| NOTE: the caller is responsible to zap the cached positions of following glyphs |
| in the stream. |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrSlotState::AttachToRoot(GrTableManager * ptman, GrSlotStream * psstrm, |
| +void GrSlotState::AttachToRoot(GrTableManager * /*ptman*/, GrSlotStream * psstrm, |
| GrSlotState * pslotNewRoot) |
| { |
| GrSlotState * pslotOldRoot = (m_dislotRootFixed == 0) ? |
| @@ -1063,7 +1063,7 @@ |
| |
| float xsWidth, xsVisWidth; |
| if (m_xsPositionX == kNegInfFloat || m_ysPositionY == kNegInfFloat) |
| - ptman->CalcPositionsUpTo(psstrmOut->m_ipass, this, &xsWidth, &xsVisWidth); |
| + ptman->CalcPositionsUpTo(psstrmOut->m_ipass, this, true, &xsWidth, &xsVisWidth); |
| |
| *pmXPos = ptman->LogToEmUnits(m_xsPositionX); |
| *pmYPos = ptman->LogToEmUnits(m_ysPositionY); |
| @@ -1077,7 +1077,7 @@ |
| { |
| Assert(m_dislotRootFixed == m_srAttachTo); |
| GrSlotState * pslotRoot = AttachRoot(psstrm); |
| - CalcRootMetrics(ptman, psstrm, kPosInfinity); |
| + CalcRootMetrics(ptman, psstrm, NULL, kPosInfinity); |
| if (pslotRoot) |
| pslotRoot->AdjustRootMetrics(ptman, psstrm); |
| } |
| @@ -1086,13 +1086,15 @@ |
| Calculate the composite metrics for this slot. |
| |
| @param psstrm - stream for which we are calculating it |
| + @param psstrmNext - because when processing in the middle of a pass, we may need to |
| + get the slot from the following (output) stream |
| @param nLevel - attachment level we are asking for; kPosInifinity means all levels |
| @param fThorough - true: do a thorough recalculation; false: don't recalculate |
| metrics for leaves (are they assumed to be accurate???) |
| --currently not used |
| ----------------------------------------------------------------------------------------------*/ |
| void GrSlotState::CalcCompositeMetrics(GrTableManager * ptman, GrSlotStream * psstrm, |
| - int nLevel, bool fThorough) |
| + GrSlotStream * psstrmNext, int nLevel, bool fThorough) |
| { |
| if (m_nCompositeLevel == nLevel) |
| return; |
| @@ -1101,19 +1103,38 @@ |
| { |
| Assert(m_dislotRootFixed == m_srAttachTo); |
| GrSlotState * pslotRoot = AttachRoot(psstrm); |
| + // Kludge to handle the fact that we might have gotten the root from the wrong stream. |
| + // Calling MidPassSlotAt finds the right one. |
| + if (psstrmNext && pslotRoot) |
| + { |
| + int islotRoot = pslotRoot->PosPassIndex(); |
| + pslotRoot = psstrm->MidPassSlotAt(islotRoot, psstrmNext); |
| + } |
| |
| InitMetrics(ptman, pslotRoot); |
| |
| for (size_t islot = 0; islot < m_vdislotAttLeaves.size(); islot++) |
| { |
| - GrSlotState * pslotLeaf = SlotAtOffset(psstrm, m_vdislotAttLeaves[islot]); |
| + GrSlotState * pslotLeaf; |
| + if (psstrmNext) |
| + { |
| + // Calculating a position in the middle of processing a pass. |
| + pslotLeaf = psstrm->MidPassSlotAt(PosPassIndex() + m_vdislotAttLeaves[islot], |
| + psstrmNext); |
| + } |
| + else |
| + { |
| + // Calculating the final position. |
| + pslotLeaf = SlotAtOffset(psstrm, m_vdislotAttLeaves[islot]); |
| + } |
| + |
| if (pslotLeaf->AttachLevel() <= nLevel) |
| - pslotLeaf->CalcCompositeMetrics(ptman, psstrm, nLevel, fThorough); |
| + pslotLeaf->CalcCompositeMetrics(ptman, psstrm, psstrmNext, nLevel, fThorough); |
| else |
| // this slot will be ignored in the composite metrics |
| pslotLeaf->ZapRootMetrics(); |
| } |
| - CalcRootMetrics(ptman, psstrm, nLevel); |
| + CalcRootMetrics(ptman, psstrm, psstrmNext, nLevel); |
| |
| m_nCompositeLevel = nLevel; |
| } |
| @@ -1129,25 +1150,33 @@ |
| /*---------------------------------------------------------------------------------------------- |
| Calculate the metrics for this node and all its leaf nodes. |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrSlotState::CalcRootMetrics(GrTableManager * ptman, GrSlotStream * psstrm, int nLevel) |
| +void GrSlotState::CalcRootMetrics(GrTableManager * /*ptman*/, GrSlotStream * psstrm, |
| + GrSlotStream * psstrmNext, int nLevel) |
| { |
| for (size_t idislot = 0; idislot < m_vdislotAttLeaves.size(); idislot++) |
| { |
| - GrSlotState * pslot = SlotAtOffset(psstrm, m_vdislotAttLeaves[idislot]); |
| - if (pslot->AttachLevel() > nLevel) |
| + GrSlotState * pslotLeaf = SlotAtOffset(psstrm, m_vdislotAttLeaves[idislot]); |
| + // Kludge to handle the fact that we might have gotten the leaf from the wrong stream. |
| + // Calling MidPassSlotAt finds the right one. |
| + if (psstrmNext) |
| + { |
| + int islot = pslotLeaf->PosPassIndex(); |
| + pslotLeaf = psstrm->MidPassSlotAt(islot, psstrmNext); |
| + } |
| + if (pslotLeaf->AttachLevel() > nLevel) |
| continue; |
| |
| - m_xsClusterXOffset = min(m_xsClusterXOffset, pslot->m_xsClusterXOffset); |
| - if (!pslot->m_fIgnoreAdvance) |
| + m_xsClusterXOffset = min(m_xsClusterXOffset, pslotLeaf->m_xsClusterXOffset); |
| + if (!pslotLeaf->m_fIgnoreAdvance) |
| { |
| m_xsClusterAdv = max( |
| m_xsClusterAdv, |
| - pslot->m_xsClusterAdv + m_xsRootShiftX); |
| + pslotLeaf->m_xsClusterAdv + m_xsRootShiftX); |
| } |
| - m_xsClusterBbLeft = min(m_xsClusterBbLeft, pslot->m_xsClusterBbLeft); |
| - m_xsClusterBbRight = max(m_xsClusterBbRight, pslot->m_xsClusterBbRight); |
| - m_ysClusterBbTop = max(m_ysClusterBbTop, pslot->m_ysClusterBbTop); |
| - m_ysClusterBbBottom = min(m_ysClusterBbBottom, pslot->m_ysClusterBbBottom); |
| + m_xsClusterBbLeft = min(m_xsClusterBbLeft, pslotLeaf->m_xsClusterBbLeft); |
| + m_xsClusterBbRight = max(m_xsClusterBbRight, pslotLeaf->m_xsClusterBbRight); |
| + m_ysClusterBbTop = max(m_ysClusterBbTop, pslotLeaf->m_ysClusterBbTop); |
| + m_ysClusterBbBottom = min(m_ysClusterBbBottom, pslotLeaf->m_ysClusterBbBottom); |
| } |
| } |
| |
| @@ -1263,7 +1292,7 @@ |
| /*---------------------------------------------------------------------------------------------- |
| Y-offsets of a single glyph relative to the previous advance position. |
| ----------------------------------------------------------------------------------------------*/ |
| -float GrSlotState::GlyphYOffset(GrSlotStream * psstrm) |
| +float GrSlotState::GlyphYOffset(GrSlotStream * /*psstrm*/) |
| { |
| return m_ysOffsetY; |
| } |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrSlotState.h Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotState.h Sat Aug 22 19:36:34 2009 |
| @@ -308,7 +308,11 @@ |
| { |
| return m_islotPosPass; |
| } |
| +#ifdef NDEBUG |
| + void SetPosPassIndex(int islot, bool /*fInputToPosPass1*/) |
| +#else |
| void SetPosPassIndex(int islot, bool fInputToPosPass1) |
| +#endif |
| { |
| // If we're resetting it, it should be to the same value as before: |
| Assert(fInputToPosPass1 || m_islotPosPass == kNotYetSet || m_islotPosPass == islot); |
| @@ -386,12 +390,12 @@ |
| return (IsInitialLineBreak(chwLB) || IsFinalLineBreak(chwLB)); |
| //return (m_chwGlyphID == chwLB); // TODO: remove |
| } |
| - bool IsInitialLineBreak(gid16 chwLB) |
| + bool IsInitialLineBreak(gid16 /*chwLB*/) |
| { |
| return (m_spsl == kspslLbInitial); |
| //return (IsLineBreak(chwLB) && m_fInitialLB == true); // TODO: remove |
| } |
| - bool IsFinalLineBreak(gid16 chwLB) |
| + bool IsFinalLineBreak(gid16 /*chwLB*/) |
| { |
| return (m_spsl == kspslLbFinal); |
| //return (IsLineBreak(chwLB) && m_fInitialLB == false); // TODO: remove |
| @@ -475,7 +479,7 @@ |
| return m_mAttachAtX; |
| } |
| |
| - int AttachWithX(GrTableManager * ptman, GrSlotStream * psstrm) |
| + int AttachWithX(GrTableManager * /*ptman*/, GrSlotStream * /*psstrm*/) |
| { |
| if (m_mAttachAtX == kNotYetSet) |
| { |
| @@ -615,7 +619,7 @@ |
| GrSlotStream * psstrmIn, GrSlotStream * psstrmOut, int islotThis); |
| |
| void CalcCompositeMetrics(GrTableManager * ptman, GrSlotStream * psstrm, |
| - int nLevel, bool fThorough = false); |
| + GrSlotStream * psstrmNext, int nLevel, bool fThorough = false); |
| |
| void Position(GrTableManager * ptman, |
| GrSlotStream * psstrmOut, int * pmXPos, int * pmYPos); |
| @@ -646,7 +650,7 @@ |
| { |
| return ClusterBbLeft(psstrm) + xs; |
| } |
| - float ClusterRsb(GrSlotStream * psstrm, float xs) |
| + float ClusterRsb(GrSlotStream * /*psstrm*/, float xs) |
| { |
| return ClusterAdvWidthFrom(xs) - ClusterBbRightFrom(xs); |
| } |
| @@ -668,19 +672,19 @@ |
| { |
| return ClusterBbRightFrom(Base(psstrm)->ClusterRootOffset()); |
| } |
| - float ClusterBbTop(GrSlotStream * psstrm) |
| + float ClusterBbTop(GrSlotStream * /*psstrm*/) |
| { |
| return m_ysClusterBbTop; |
| } |
| - float ClusterBbBottom(GrSlotStream * psstrm) |
| + float ClusterBbBottom(GrSlotStream * /*psstrm*/) |
| { |
| return m_ysClusterBbBottom; |
| } |
| - float ClusterBbWidth(GrSlotStream * psstrm) |
| + float ClusterBbWidth(GrSlotStream * /*psstrm*/) |
| { |
| return m_xsClusterBbRight - m_xsClusterBbLeft + 1; |
| } |
| - float ClusterBbHeight(GrSlotStream * psstrm) |
| + float ClusterBbHeight(GrSlotStream * /*psstrm*/) |
| { |
| return m_ysClusterBbTop - m_ysClusterBbBottom + 1; |
| } |
| @@ -990,7 +994,8 @@ |
| void InitMetrics(GrTableManager * ptman, GrSlotState * pslotRoot); |
| void InitLeafMetrics(GrTableManager * ptman, GrSlotState * pslotRoot); |
| void InitRootMetrics(GrTableManager * ptman); |
| - void CalcRootMetrics(GrTableManager * ptman, GrSlotStream *, int nLevel); |
| + void CalcRootMetrics(GrTableManager * ptman, GrSlotStream * psstrm, |
| + GrSlotStream * psstrmNext, int nLevel); |
| void AttachToRoot(GrTableManager * ptman, GrSlotStream *, GrSlotState * pslotNewRoot); |
| void AttachLogUnits(GrTableManager * ptman, |
| GrSlotState * pslotRoot, |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrSlotStream.cpp Wed Feb 04 07:53:26 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotStream.cpp Sat Aug 22 19:36:34 2009 |
| @@ -189,12 +189,16 @@ |
| stream position when the rule is being run. |
| |
| @param dislot - how far back to peek before the write position |
| - when the rule started; a negative number |
| + WHEN THE RULE STARTED; a negative number |
| (NOTE: the current write position is irrelevant) |
| @param fNullOkay - true if it's okay to return NULL in the situation where we're asking |
| for something before the beginning of the stream |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef NDEBUG |
| +GrSlotState * GrSlotStream::PeekBack(int dislot, bool /*fNullOkay*/) |
| +#else |
| GrSlotState * GrSlotStream::PeekBack(int dislot, bool fNullOkay) |
| +#endif |
| { |
| Assert(dislot < 0); |
| if (dislot < m_islotRuleStartWrite * -1) |
| @@ -1104,6 +1108,7 @@ |
| case kdircRLO: |
| case kdircRLE: |
| case kdircPdfR: |
| + case kdircRlb: |
| return true; |
| |
| case kdircNeutral: |
| @@ -1212,7 +1217,7 @@ |
| return true; |
| |
| float xsWidth, xsVisWidth; |
| - ptman->CalcPositionsUpTo(m_ipass, NULL, &xsWidth, &xsVisWidth); |
| + ptman->CalcPositionsUpTo(m_ipass, NULL, false, &xsWidth, &xsVisWidth); |
| |
| *pxsWidth = (fIgnoreTrailingWS || twsh == ktwshOnlyWs) ? xsVisWidth : xsWidth; |
| return (*pxsWidth < xsSpaceAllotted); |
| @@ -1322,7 +1327,7 @@ |
| @param islotMin - first slot that is officially part of the segment (after initial LB) |
| ----------------------------------------------------------------------------------------------*/ |
| int GrSlotStream::MakeSegmentBreak(GrTableManager * ptman, |
| - int islotPrevBreak, bool fInsertedLB, int islotStartTry, |
| + int /*islotPrevBreak*/, bool /*fInsertedLB*/, int islotStartTry, |
| LineBrk lb, TrWsHandling twsh, int islotMin, |
| LineBrk * plbNextToTry) |
| { |
| @@ -1576,7 +1581,11 @@ |
| Return the break weight of the given slot, which should be a line-break. |
| OBSOLETE?? |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef NDEBUG |
| +LineBrk GrSlotStream::BreakWeightAt(gid16 /*chwLB*/, int islot) |
| +#else |
| LineBrk GrSlotStream::BreakWeightAt(gid16 chwLB, int islot) |
| +#endif |
| { |
| GrSlotState * pslot = GetSlotAt(islot); |
| Assert(pslot->IsLineBreak(chwLB)); |
| @@ -1769,7 +1778,7 @@ |
| @param fBackingUp - this chunk results in the stream position moving backwards, |
| so clear anything we're backing over |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrSlotStream::MapInputChunk(int islotInputMin, int islotOutputMin, int islotInputLim, |
| +void GrSlotStream::MapInputChunk(int islotInputMin, int islotOutputMin, int /*islotInputLim*/, |
| bool fSkipChunkStart, bool fBackingUp) |
| { |
| Assert(AssertValid()); |
| @@ -1828,7 +1837,7 @@ |
| @param fBackingUp - this chunk results in the stream position moving backwards, |
| so clear anything we're backing over |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrSlotStream::MapOutputChunk(int islotOutputMin, int islotInputMin, int islotOutputLim, |
| +void GrSlotStream::MapOutputChunk(int islotOutputMin, int islotInputMin, int /*islotOutputLim*/, |
| bool fSkipChunkStart, int cslotReprocess, bool fBackingUp) |
| { |
| Assert(AssertValid()); |
| @@ -1863,7 +1872,11 @@ |
| Ensure that the chunk maps for a pair of streams match properly. The recipient is |
| the input stream. |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef _DEBUG |
| void GrSlotStream::AssertChunkMapsValid(GrSlotStream * psstrmOut) |
| +#else |
| +void GrSlotStream::AssertChunkMapsValid(GrSlotStream * ) |
| +#endif |
| { |
| #ifdef _DEBUG |
| GrSlotStream * psstrmIn = this; |
| @@ -1915,7 +1924,11 @@ |
| Ensure that corresponding items in the streams of a positioning pass have matching |
| stream indices. The recipient is the output stream. |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef _DEBUG |
| void GrSlotStream::AssertStreamIndicesValid(GrSlotStream * psstrmIn) |
| +#else |
| +void GrSlotStream::AssertStreamIndicesValid(GrSlotStream * ) |
| +#endif |
| { |
| #ifdef _DEBUG |
| if (!GotIndexOffset()) |
| @@ -1939,7 +1948,11 @@ |
| in the output stream. (Currently the compiler ensures this by making it an error |
| to write rules that don't do this.) |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef _DEBUG |
| void GrSlotStream::AssertAttachmentsInOutput(int islotMin, int islotLim) |
| +#else |
| +void GrSlotStream::AssertAttachmentsInOutput(int , int ) |
| +#endif |
| { |
| #ifdef _DEBUG |
| for (int islot = islotMin; islot < islotLim; islot++) |
| @@ -2007,7 +2016,11 @@ |
| Record the number of slots in the stream that are previous to the official start of the |
| segment. |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef _DEBUG |
| void GrSlotStream::CalcIndexOffset(GrTableManager * ptman) |
| +#else |
| +void GrSlotStream::CalcIndexOffset(GrTableManager * ) |
| +#endif |
| { |
| if (GotIndexOffset()) |
| return; // already figured it |
| @@ -2203,6 +2212,21 @@ |
| } |
| |
| /*---------------------------------------------------------------------------------------------- |
| + In the middle of running a pass, return the given slot to use in processing. |
| + Read it from the reprocess buffer if appropriate, or for slots previous to the current |
| + position, read from the output stream (psstrmNext). |
| + |
| + psstrmNext may be NULL when processing is complete, therefore we only have one stream to |
| + deal with. |
| +----------------------------------------------------------------------------------------------*/ |
| +GrSlotState * GrSlotStream::MidPassSlotAt(int islot, GrSlotStream * psstrmNext) |
| +{ |
| + int islotInput = islot - ReadPosForNextGet() + 1; // +1 because RuleInputSlot takes 0 to mean the previously read slot |
| + GrSlotState * pslot = RuleInputSlot(islotInput, psstrmNext); |
| + return pslot; |
| +} |
| + |
| +/*---------------------------------------------------------------------------------------------- |
| Return the "current" input item from the rule's perspective, ie, the last slot read. |
| So dislotOffset = 0 means not the slot at the read position but one slot earlier. |
| |
| @@ -2214,7 +2238,6 @@ |
| @param fNullOkay - true if it's okay to return NULL in the situation where we're asking |
| for something before the beginning of the stream |
| ----------------------------------------------------------------------------------------------*/ |
| - |
| GrSlotState * GrSlotStream::RuleInputSlot(int dislotOffset, GrSlotStream * psstrmOutput, |
| bool fNullOkay) |
| { |
| @@ -2244,8 +2267,10 @@ |
| |
| if (cslotOffsetBack >= cslotPostReproc + cslotValidReproc) |
| { |
| - // Read from the output stream. |
| - int dislotTmp = dislotOffset - 1 + cslotPostReproc + cslotValidReproc; |
| + // Read from the output stream. (Remember that PeekBack works relative to |
| + // the rule-start write position, not the current write position.) |
| + int dislotTmp = dislotOffset - 1 + cslotPostReproc |
| + + cslotValidReproc - SlotsToReprocess(); |
| Assert(dislotTmp < 0); |
| return psstrmOutput->PeekBack(dislotTmp); |
| } |
| @@ -2253,7 +2278,7 @@ |
| { |
| if (m_islotReprocPos > -1) |
| { |
| - // Current read pos is inside reprocess buffer. |
| + // Current read pos could be inside reprocess buffer. |
| Assert(cslotPostReproc == 0); |
| int islotStartReadReprocBuf = m_vpslotReproc.size() - cslotValidReproc; |
| Assert(islotStartReadReprocBuf >= 0); |
| @@ -2342,9 +2367,10 @@ |
| else if (pslotAfter) |
| pslot->Associate(pslotAfter); |
| else |
| + { |
| // Weird, but can happen with an empty segment. |
| Warn("No assocations"); |
| - |
| + } |
| // Assert(pslot->m_vpslotAssoc.Size() > 0); |
| pslot->m_fNeutralAssocs = true; |
| } |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrSlotStream.h Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotStream.h Sat Aug 22 19:36:34 2009 |
| @@ -107,7 +107,7 @@ |
| ReleaseSlots(0, m_vpslot.size()); |
| } |
| |
| - void ReleaseSlots(int islotMin, int islotLim) |
| + void ReleaseSlots(int /*islotMin*/, int /*islotLim*/) |
| { |
| // A slot stream is responsible for deleting the slot states that it created, |
| // that is, the ones whose modified tag equals this stream's pass index. |
| @@ -182,6 +182,7 @@ |
| return Peek(islot - ReadPosForNextGet()); |
| } |
| |
| + // Return the functional read position, taking into account the reprocess buffer. |
| int ReadPosForNextGet() |
| { |
| return ReadPos() - SlotsToReprocess(); |
| @@ -260,12 +261,16 @@ |
| |
| void MarkFullyWritten(); |
| |
| +#ifdef NDEBUG |
| + void SetSegMin(int islot, bool /*fAdjusting*/ = false) |
| +#else |
| void SetSegMin(int islot, bool fAdjusting = false) |
| +#endif |
| { |
| Assert(fAdjusting || m_islotSegMin == -1 || m_islotSegMin == islot); |
| m_islotSegMin = islot; |
| } |
| - void SetSegMinToWritePos(bool fMod = true) |
| + void SetSegMinToWritePos(bool /*fMod*/ = true) |
| { |
| if (m_islotSegMin == -1) |
| m_islotSegMin = m_islotWritePos; |
| @@ -456,6 +461,7 @@ |
| } |
| } |
| |
| + GrSlotState * MidPassSlotAt(int islot, GrSlotStream * psstrmNext = NULL); |
| GrSlotState * RuleInputSlot(int dislot = 0, GrSlotStream * psstrmOut = NULL, |
| bool fNullOkay = false); |
| GrSlotState * RuleOutputSlot(int dislot = 0); |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrTableManager.cpp Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrTableManager.cpp Sat Aug 22 19:36:34 2009 |
| @@ -25,8 +25,8 @@ |
| DEFINE_THIS_FILE |
| #ifndef _WIN32 |
| #include <stdlib.h> |
| -#include <math.h> |
| #endif |
| +#include <math.h> |
| |
| //:>******************************************************************************************** |
| //:> Forward declarations |
| @@ -572,7 +572,7 @@ |
| else |
| { |
| Assert(!m_engst.m_fInsertedLB); |
| - Assert(islotUnderBreak == -1 || m_engst.m_fFinalLB); |
| + //Assert(islotUnderBreak == -1 || m_engst.m_fFinalLB); -- no, ExtendGlyphIDOutput clearly sets islotUnderBreak regardless |
| } |
| int islotTmp = OutputStream(m_cpass - 1)->WritePos(); |
| GrSlotState * pslotTmp; |
| @@ -931,7 +931,7 @@ |
| @param plbFound - kind of line-break created |
| ----------------------------------------------------------------------------------------------*/ |
| bool GrTableManager::Backtrack(int * pislotPrevBreak, |
| - LineBrk * plbMin, LineBrk lbMax, TrWsHandling twsh, bool fMoreText, |
| + LineBrk * plbMin, LineBrk lbMax, TrWsHandling twsh, bool /*fMoreText*/, |
| int ichwCallerBtLim, bool fEndLine, |
| LineBrk * plbFound) |
| { |
| @@ -1343,7 +1343,7 @@ |
| Calculate the associations, and record the output slots in the segment. |
| ----------------------------------------------------------------------------------------------*/ |
| void GrTableManager::RecordAssocsAndOutput(Font * pfont, |
| - Segment * pseg, bool fWidthIsCharCount, |
| + Segment * pseg, bool /*fWidthIsCharCount*/, |
| TrWsHandling twsh, bool fParaRtl, int nDirDepth) |
| { |
| int cchwUnderlying = pseg->stopCharacter() - pseg->startCharacter(); |
| @@ -1362,7 +1362,7 @@ |
| #endif // OLD_TEST_STUFF |
| |
| // Make sure the final positions are set for every glyph. |
| - CalcPositionsUpTo(m_cpass-1, reinterpret_cast<GrSlotState *>(NULL), |
| + CalcPositionsUpTo(m_cpass-1, reinterpret_cast<GrSlotState *>(NULL), false, |
| &xsTotalWidth, &xsVisWidth); |
| pseg->SetWidths(xsVisWidth, xsTotalWidth); |
| |
| @@ -1377,7 +1377,7 @@ |
| Calculate the underlying-to-surface associations and ligature mappings. |
| Assumes the arrays have been properly initialized. |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrTableManager::CalculateAssociations(Segment * pseg, int csloutSurface) |
| +void GrTableManager::CalculateAssociations(Segment * pseg, int /*csloutSurface*/) |
| { |
| GrSlotStream * psstrmFinal = OutputStream(m_cpass-1); |
| |
| @@ -2350,18 +2350,20 @@ |
| final pass, but it could be another if positions are |
| requested by the rules themselves |
| @param pslotLast - last slot that needs to be positioned, or NULL |
| + @param fMidPass - calculating the position of some slot in the middle of the pass |
| @param pxsWidth - return the total width used so far |
| @param psxVisibleWidth - return the visible width so far |
| |
| MOVE to EngineState |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrTableManager::CalcPositionsUpTo(int ipass, GrSlotState * pslotLast, |
| +void GrTableManager::CalcPositionsUpTo(int ipass, GrSlotState * pslotLast, bool fMidPass, |
| float * pxsWidth, float * pxsVisibleWidth) |
| { |
| Assert(ipass >= m_ipassPos1 - 1); |
| |
| int isstrm = ipass; |
| GrSlotStream * psstrm = OutputStream(isstrm); |
| + GrSlotStream * psstrmNext = (isstrm >= m_cpass - 1) ? NULL : OutputStream(isstrm + 1); |
| Assert(psstrm->GotIndexOffset()); |
| if (psstrm->WritePos() <= psstrm->IndexOffset()) |
| { |
| @@ -2399,7 +2401,9 @@ |
| // to be later in the stream than the last actual slot passed in. |
| if (!psstrm->HasSlotAtPosPassIndex(pslotLast->AttachRootPosPassIndex())) |
| return; |
| - GrSlotState * pslotLastBase = pslotLast->Base(psstrm); |
| + GrSlotState * pslotLastBase = (fMidPass && pslotLast->PosPassIndex() < psstrm->WritePos()) |
| + ? pslotLast->Base(psstrmNext) |
| + : pslotLast->Base(psstrm); |
| |
| if (ipass == m_cpass - 1 && m_engst.m_islotPosNext > -1) |
| { |
| @@ -2428,6 +2432,7 @@ |
| } |
| |
| std::vector<GrSlotState *> vpslotAttached; |
| + std::vector<GrSlotStream *> vpsstrmAttached; |
| |
| bool fRtl = RightToLeft(); |
| |
| @@ -2435,13 +2440,24 @@ |
| { |
| Assert(islot < psstrm->SlotsPresent()); |
| |
| - pslot = (isstrm == ipass) ? psstrm->SlotAt(islot) : psstrm->OutputSlotAt(islot); |
| + GrSlotStream * psstrmThis = psstrm; |
| + if (fMidPass && islot < psstrm->WritePos()) |
| + { |
| + pslot = psstrm->MidPassSlotAt(islot, psstrmNext); |
| + psstrmThis = psstrmNext; |
| + } |
| + else |
| + { |
| + //pslot = (isstrm == ipass) ? psstrm->SlotAt(islot) : psstrm->OutputSlotAt(islot); |
| + pslot = psstrm->SlotAt(islot); |
| + } |
| |
| if (!pslot->IsBase()) |
| { |
| // This slot is attached to another; it will be positioned strictly |
| // relative to that one. This happens in the loop below. |
| vpslotAttached.push_back(pslot); |
| + vpsstrmAttached.push_back(psstrmThis); |
| } |
| else |
| { |
| @@ -2455,7 +2471,7 @@ |
| } |
| |
| // Make sure the metrics are the complete ones. |
| - pslot->CalcCompositeMetrics(this, psstrm, kPosInfinity, true); |
| + pslot->CalcCompositeMetrics(this, psstrm, psstrmNext, kPosInfinity, true); |
| |
| float xsInc = pslot->GlyphXOffset(psstrm, fakeItalicRatio); |
| float ysInc = pslot->GlyphYOffset(psstrm); |
| @@ -2514,8 +2530,9 @@ |
| |
| for (size_t ipslot = 0; ipslot < vpslotAttached.size(); ipslot++) |
| { |
| - GrSlotState * pslot = vpslotAttached[ipslot]; |
| - GrSlotState * pslotBase = pslot->Base(psstrm); |
| + GrSlotState * pslotAtt = vpslotAttached[ipslot]; |
| + GrSlotStream * psstrmAtt = vpsstrmAttached[ipslot]; |
| + GrSlotState * pslotBase = pslotAtt->Base(psstrmAtt); |
| if (pslotBase->XPosition() == kNegInfinity || pslotBase->YPosition() == kNegInfinity) |
| { |
| Assert(false); |
| @@ -2523,10 +2540,10 @@ |
| } |
| float xsCluster = pslotBase->XPosition() - pslotBase->GlyphXOffset(psstrm, fakeItalicRatio); |
| float ysCluster = pslotBase->YPosition() - pslotBase->GlyphYOffset(psstrm); |
| - float xsInc = pslot->GlyphXOffset(psstrm, fakeItalicRatio); |
| - float ysInc = pslot->GlyphYOffset(psstrm); |
| - pslot->SetXPos(xsCluster + xsInc); |
| - pslot->SetYPos(ysCluster + ysInc); |
| + float xsInc = pslotAtt->GlyphXOffset(psstrm, fakeItalicRatio); |
| + float ysInc = pslotAtt->GlyphYOffset(psstrm); |
| + pslotAtt->SetXPos(xsCluster + xsInc); |
| + pslotAtt->SetYPos(ysCluster + ysInc); |
| |
| // My theory is that we don't need to adjust *pxsWidth here, because the width of |
| // any non-base slots should be factored into the advance width of their cluster |
| --- misc/silgraphite-2.3.1/engine/src/segment/GrTableManager.h Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrTableManager.h Sat Aug 22 19:36:35 2009 |
| @@ -442,7 +442,7 @@ |
| int LogToEmUnits(float xys); |
| bool GPointToXY(gid16 chwGlyphID, int nGPoint, float * xs, float * ys); |
| |
| - void CalcPositionsUpTo(int ipass, GrSlotState * pslotLast, |
| + void CalcPositionsUpTo(int ipass, GrSlotState * pslotLast, bool fMidPass, |
| float * pxsWidth, float * pxsVisibleWidth); |
| |
| void InitPosCache() |
| --- misc/silgraphite-2.3.1/engine/src/segment/Platform.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/Platform.cpp Sat Aug 22 19:36:35 2009 |
| @@ -103,7 +103,7 @@ |
| { |
| // assumes NULL terminated strings |
| const utf16 *start = s; |
| - for (; *s; ++s); |
| + for (; *s; ++s) {}; |
| |
| return s - start; |
| } |
| --- misc/silgraphite-2.3.1/engine/src/segment/Segment.cpp Thu Aug 21 16:24:32 2008 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/Segment.cpp Sat Aug 22 19:36:35 2009 |
| @@ -1178,7 +1178,7 @@ |
| part of the segment. |
| ----------------------------------------------------------------------------------------------*/ |
| float Segment::getRangeWidth(int ichMin, int ichLim, |
| - bool fStartLine, bool fEndLine, bool fSkipSpace) |
| + bool /*fStartLine*/, bool /*fEndLine*/, bool fSkipSpace) |
| { |
| if (m_dxsWidth < 0) |
| { |
| @@ -1549,7 +1549,11 @@ |
| void Segment::SetUpOutputArrays(Font * pfont, GrTableManager * ptman, |
| GrSlotStream * psstrmFinal, |
| int cchwInThisSeg, int csloutSurface, gid16 chwLB, |
| +#ifdef NDEBUG |
| + TrWsHandling twsh, bool fParaRtl, int nDirDepth, bool /*fEmpty*/) |
| +#else |
| TrWsHandling twsh, bool fParaRtl, int nDirDepth, bool fEmpty) |
| +#endif |
| { |
| m_mFontEmUnits = EngineImpl()->GetFontEmUnits(); |
| |
| @@ -1725,7 +1729,7 @@ |
| Set up the data structures that represent the actual rendered glyphs for the new segment. |
| ----------------------------------------------------------------------------------------------*/ |
| void Segment::SetUpGlyphInfo(GrTableManager * ptman, GrSlotStream * psstrmFinal, |
| - gid16 chwLB, int nDirDepth, int islotMin, int cslot) |
| + gid16 chwLB, int /*nDirDepth*/, int islotMin, int cslot) |
| { |
| //int paraDirLevel = (ptman->State()->ParaRightToLeft()) ? 1 : 0; |
| |
| @@ -1751,7 +1755,7 @@ |
| |
| m_isloutGinf0 = -1; |
| int iginf = 0; |
| - for (int islot = islotMin; islot < cslot; islot++) |
| + for (islot = islotMin; islot < cslot; islot++) |
| { |
| GrSlotState * pslot = psstrmFinal->SlotAt(islot); |
| |
| @@ -2160,7 +2164,7 @@ |
| @param ichwUnder - character index relative to the official beginning of the segment |
| @param islot - processed glyph it maps to |
| ----------------------------------------------------------------------------------------------*/ |
| -void Segment::MarkSlotInPrevSeg(int ichwUnder, int islot) |
| +void Segment::MarkSlotInPrevSeg(int ichwUnder, int /*islot*/) |
| { |
| if (ichwUnder >= m_ichwAssocsMin) |
| m_prgisloutBefore[ichwUnder - m_ichwAssocsMin] = kNegInfinity; |
| @@ -2174,7 +2178,7 @@ |
| @param ichwUnder - character index relative to the official beginning of the segment |
| @param islot - processed glyph it maps to |
| ----------------------------------------------------------------------------------------------*/ |
| -void Segment::MarkSlotInNextSeg(int ichwUnder, int islot) |
| +void Segment::MarkSlotInNextSeg(int ichwUnder, int /*islot*/) |
| { |
| if (ichwUnder < m_ichwAssocsLim) |
| m_prgisloutAfter[ichwUnder - m_ichwAssocsMin] = kPosInfinity; |
| @@ -2351,7 +2355,7 @@ |
| @param pfAfter - return true if they clicked on trailing side; possibly NULL |
| ----------------------------------------------------------------------------------------------*/ |
| int Segment::LogicalSurfaceToUnderlying(int islout, float xsOffset, float ysClick, |
| - float dxsGlyphWidth, float dysGlyphHeight, bool * pfAfter) |
| + float dxsGlyphWidth, float /*dysGlyphHeight*/, bool * pfAfter) |
| { |
| Assert(islout >= 0); |
| Assert(islout < m_cslout); |
| @@ -2529,31 +2533,31 @@ |
| else if (fBefore) |
| { |
| int isloutRet; |
| - int ichw = ichwSegOffset; |
| + int ichwTemp = ichwSegOffset; |
| // If no association has been made, loop forward to the next slot |
| // we are before. As a last resort, answer kPosInfinity, meaning we |
| // aren't before anything. |
| do |
| { |
| - isloutRet = m_prgisloutBefore[ichw - m_ichwAssocsMin]; |
| - do { ++ichw; } |
| - while (!GrCharStream::AtUnicodeCharBoundary(m_pgts, ichw)); |
| - } while (isloutRet == kPosInfinity && ichw < m_ichwAssocsLim); |
| + isloutRet = m_prgisloutBefore[ichwTemp - m_ichwAssocsMin]; |
| + do { ++ichwTemp; } |
| + while (!GrCharStream::AtUnicodeCharBoundary(m_pgts, ichwTemp)); |
| + } while (isloutRet == kPosInfinity && ichwTemp < m_ichwAssocsLim); |
| return isloutRet; |
| } |
| else |
| { |
| int isloutRet; |
| - int ichw = ichwSegOffset; |
| + int ichwTemp = ichwSegOffset; |
| // If no association has been made, loop backward to the previous slot |
| // we are after. As a last resort, answer kNegInfinity, meaning we |
| // aren't after anything. |
| do |
| { |
| - isloutRet = m_prgisloutAfter[ichw - m_ichwAssocsMin]; |
| - do { --ichw; } |
| - while (!GrCharStream::AtUnicodeCharBoundary(m_pgts, ichw)); |
| - } while (isloutRet == kNegInfinity && ichw >= 0); |
| + isloutRet = m_prgisloutAfter[ichwTemp - m_ichwAssocsMin]; |
| + do { --ichwTemp; } |
| + while (!GrCharStream::AtUnicodeCharBoundary(m_pgts, ichwTemp)); |
| + } while (isloutRet == kNegInfinity && ichwTemp >= 0); |
| return isloutRet; |
| } |
| Assert(false); // should never reach here |
| @@ -2748,7 +2752,11 @@ |
| that root glyph as one of its roots. |
| OBSOLETE |
| ----------------------------------------------------------------------------------------------*/ |
| +#ifdef _DEBUG |
| void Segment::AssertValidClusters(GrSlotStream * psstrm) |
| +#else |
| +void Segment::AssertValidClusters(GrSlotStream * /*psstrm*/) |
| +#endif |
| { |
| #ifdef _DEBUG |
| for (int islot = 0; islot < psstrm->WritePos(); islot++) |
| --- misc/silgraphite-2.3.1/engine/src/segment/TransductionLog.cpp Wed Jan 28 04:01:29 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/TransductionLog.cpp Sat Aug 22 19:36:35 2009 |
| @@ -175,7 +175,7 @@ |
| Output a file showing a log of the transduction process and the resulting segment. |
| ----------------------------------------------------------------------------------------------*/ |
| void GrTableManager::WriteXductnLog(std::ostream & strmOut, |
| - GrCharStream * pchstrm, Segment * psegRet, |
| + GrCharStream * pchstrm, Segment * /*psegRet*/, |
| int cbPrevSegDat, byte * pbPrevSegDat) |
| { |
| if (cbPrevSegDat == 0) |
| @@ -416,8 +416,8 @@ |
| the raw (UTF-16 or UTF-8) chars for display. To do this we get the raw characters |
| directly from the text source. |
| ----------------------------------------------------------------------------------------------*/ |
| -void GrCharStream::GetLogDataRaw(GrTableManager * ptman, int cchl, int cchrBackup, |
| - int cchrMaxRaw, int * prgchl, |
| +void GrCharStream::GetLogDataRaw(GrTableManager * /*ptman*/, int cchl, int cchrBackup, |
| + int /*cchrMaxRaw*/, int * prgchl, |
| utf16 * prgchw2, utf16 * prgchw3, utf16 * prgchw4, utf16 * prgchw5, utf16 * prgchw6, |
| int * prgcchr) |
| { |
| @@ -441,7 +441,7 @@ |
| case kutf8: |
| prgchsRunText8 = new utf8[cchrRange]; |
| m_pgts->fetch(ichrMin, cchrRange, prgchsRunText8); |
| - for (int ichr = 0; ichr < cchrRange; ichr++) |
| + for (ichr = 0; ichr < cchrRange; ichr++) |
| prgchwRunText[ichr] = (utf16)prgchsRunText8[ichr]; // zero-extend into UTF-16 buffer |
| break; |
| case kutf16: |
| @@ -634,7 +634,7 @@ |
| m_pzpst->LogRulesFiredAndFailed(strmOut, psstrmIn); |
| } |
| |
| -void PassState::LogRulesFiredAndFailed(std::ostream & strmOut, GrSlotStream * psstrmIn) |
| +void PassState::LogRulesFiredAndFailed(std::ostream & strmOut, GrSlotStream * /*psstrmIn*/) |
| { |
| |
| strmOut << "PASS " << m_ipass << "\n\n" << "Rules matched: "; |
| @@ -1193,7 +1193,7 @@ |
| if (fAnyPseudos) |
| { |
| strmOut << "Actual glyphs: "; |
| - for (int islout = 0; islout < m_cslout; islout++) |
| + for (islout = 0; islout < m_cslout; islout++) |
| { |
| GrSlotOutput * psloutTmp = m_prgslout + islout; |
| if (psloutTmp->GlyphID() != psloutTmp->ActualGlyphForOutput(ptman)) |
| @@ -1319,7 +1319,7 @@ |
| Write out the header lines for the slot contents. |
| ----------------------------------------------------------------------------------------------*/ |
| void GrTableManager::LogSlotHeader(std::ostream & strmOut, int islotLim, |
| - int cspPerSlot, int cspLeading, int islotMin) |
| + int /*cspPerSlot*/, int cspLeading, int islotMin) |
| { |
| islotLim = min(islotLim, MAX_SLOTS); |
| |
| @@ -1721,7 +1721,7 @@ |
| |
| case kslatAttAtX: // always do these in pairs |
| case kslatAttAtY: |
| - if (m_mAttachAtX != (pslotPrev ? pslotPrev->m_mAttachAtX : kNotYetSet) || |
| + if (m_mAttachAtX != (pslotPrev ? pslotPrev->m_mAttachAtX : static_cast<short>(kNotYetSet)) || |
| m_mAttachAtY != (pslotPrev ? pslotPrev->m_mAttachAtY : 0)) |
| { |
| ptman->LogInTable(strmOut, |
| @@ -1730,7 +1730,7 @@ |
| } |
| break; |
| case kslatAttAtGpt: |
| - if (m_nAttachAtGpoint != (pslotPrev ? pslotPrev->m_nAttachAtGpoint : kNotYetSet)) |
| + if (m_nAttachAtGpoint != (pslotPrev ? pslotPrev->m_nAttachAtGpoint : static_cast<short>(kNotYetSet))) |
| { |
| ptman->LogInTable(strmOut, |
| ((m_nAttachAtGpoint == kGpointZero) ? 0 : m_nAttachAtGpoint)); |
| @@ -1750,7 +1750,7 @@ |
| |
| case kslatAttWithX: // always do these in pairs |
| case kslatAttWithY: |
| - if (m_mAttachWithX != (pslotPrev ? pslotPrev->m_mAttachWithX : kNotYetSet) || |
| + if (m_mAttachWithX != (pslotPrev ? pslotPrev->m_mAttachWithX : static_cast<short>(kNotYetSet)) || |
| m_mAttachWithY != (pslotPrev ? pslotPrev->m_mAttachWithY : 0)) |
| { |
| ptman->LogInTable(strmOut, |
| @@ -1759,7 +1759,7 @@ |
| } |
| break; |
| case kslatAttWithGpt: |
| - if (m_nAttachWithGpoint != (pslotPrev ? pslotPrev->m_nAttachWithGpoint : kNotYetSet)) |
| + if (m_nAttachWithGpoint != (pslotPrev ? pslotPrev->m_nAttachWithGpoint : static_cast<short>(kNotYetSet))) |
| { |
| ptman->LogInTable(strmOut, |
| ((m_nAttachWithGpoint == kGpointZero) ? 0 : m_nAttachWithGpoint)); |
| @@ -1786,14 +1786,14 @@ |
| break; |
| |
| case kslatBreak: |
| - if (m_lb != (pslotPrev ? pslotPrev->m_lb : kNotYetSet8)) |
| + if (m_lb != (pslotPrev ? pslotPrev->m_lb : static_cast<sdata8>(kNotYetSet8))) |
| { |
| ptman->LogBreakWeightInTable(strmOut, m_lb); |
| return; |
| } |
| break; |
| case kslatDir: |
| - if (m_dirc != (pslotPrev ? pslotPrev->m_dirc : kNotYetSet8)) |
| + if (m_dirc != (pslotPrev ? pslotPrev->m_dirc : static_cast<sdata8>(kNotYetSet8))) |
| { |
| ptman->LogDirCodeInTable(strmOut, m_dirc); |
| return; |
| --- misc/silgraphite-2.3.1/engine/test/ProfileHarness/GrUtfTextSrc.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/test/ProfileHarness/GrUtfTextSrc.cpp Sat Aug 22 19:36:35 2009 |
| @@ -210,12 +210,12 @@ |
| } |
| |
| |
| -bool GrUtfTextSrc::getRightToLeft(gr::toffset ich) |
| +bool GrUtfTextSrc::getRightToLeft(gr::toffset /*ich*/) |
| { |
| return mRtl; // assumes src only contains one direction |
| } |
| |
| -unsigned int GrUtfTextSrc::getDirectionDepth(gr::toffset ich) |
| +unsigned int GrUtfTextSrc::getDirectionDepth(gr::toffset /*ich*/) |
| { |
| return (mRtl) ? 1 : 0; // TBD |
| } |
| @@ -254,7 +254,7 @@ |
| return range; |
| } |
| |
| -size_t GrUtfTextSrc::getFontFeatures(gr::toffset ich, gr::FeatureSetting * prgfset) |
| +size_t GrUtfTextSrc::getFontFeatures(gr::toffset /*ich*/, gr::FeatureSetting * /*prgfset*/) |
| { |
| return 0; |
| } |
| @@ -277,14 +277,14 @@ |
| |
| // these should be called I hope |
| float |
| -GrUtfTextSrc::getFontSize(gr::toffset ich) |
| +GrUtfTextSrc::getFontSize(gr::toffset /*ich*/) |
| { |
| assert(mFont); |
| return mPointSize; |
| } |
| |
| bool |
| -GrUtfTextSrc::getBold(gr::toffset ich) |
| +GrUtfTextSrc::getBold(gr::toffset /*ich*/) |
| { |
| assert(mFont); |
| // NS_ASSERTION(false, "unexpected call to getBold"); |
| @@ -293,7 +293,7 @@ |
| } |
| |
| bool |
| -GrUtfTextSrc::getItalic(gr::toffset ich) |
| +GrUtfTextSrc::getItalic(gr::toffset /*ich*/) |
| { |
| assert(mFont); |
| //NS_ASSERTION(false, "unexpected call to getItalic"); |
| @@ -301,7 +301,7 @@ |
| return mFont->italic(); |
| } |
| |
| -gr::isocode GrUtfTextSrc::getLanguage(gr::toffset ich) |
| +gr::isocode GrUtfTextSrc::getLanguage(gr::toffset /*ich*/) |
| { |
| gr::isocode unknown; |
| std::fill_n(unknown.rgch, 4, '\0'); |
| --- misc/silgraphite-2.3.1/engine/test/ProfileHarness/GrUtfTextSrc.h Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/test/ProfileHarness/GrUtfTextSrc.h Sat Aug 22 19:36:35 2009 |
| @@ -79,7 +79,7 @@ |
| virtual size_t fetch(gr::toffset ichMin, size_t cch, gr::utf32 * prgchBuffer); |
| virtual size_t fetch(gr::toffset ichMin, size_t cch, gr::utf16 * prgchwBuffer); |
| virtual size_t fetch(gr::toffset ichMin, size_t cch, gr::utf8 * prgchsBuffer); |
| - virtual gr::GrResult getFaceName(int ich, unsigned int cchMax, |
| + virtual gr::GrResult getFaceName(int /*ich*/, unsigned int /*cchMax*/, |
| gr::utf16 * prgchFaceName, unsigned int * pcchLen) |
| { |
| prgchFaceName[0] = 0; |
| @@ -92,12 +92,12 @@ |
| virtual bool getItalic(gr::toffset ich); |
| virtual bool getRightToLeft(gr::toffset ich); |
| virtual unsigned int getDirectionDepth(gr::toffset ich); |
| - virtual float getVerticalOffset(gr::toffset ich) { return 0;}; |
| + virtual float getVerticalOffset(gr::toffset /*ich*/) { return 0;}; |
| virtual gr::isocode getLanguage(gr::toffset ich); |
| |
| virtual std::pair<gr::toffset, gr::toffset> propertyRange(gr::toffset ich); |
| virtual size_t getFontFeatures(gr::toffset ich, gr::FeatureSetting * prgfset); |
| - virtual bool sameSegment(gr::toffset ich1, gr::toffset ich2) { return true; }; |
| + virtual bool sameSegment(gr::toffset /*ich1*/, gr::toffset /*ich2*/) { return true; }; |
| |
| protected: |
| bool checkBuffer8(); |
| @@ -129,11 +129,11 @@ |
| virtual void getColors(gr::toffset ich, int * pclrFore, int * pclrBack); |
| |
| // Shouldn't be here! |
| - virtual gr::GrResult Fetch(int ichMin, int ichLim, gr::utf16 * prgchBuf) { return gr::kresNotImpl; }; |
| - virtual gr::GrResult get_Length(int * pcch) { return gr::kresNotImpl; }; |
| - virtual gr::GrResult GetFontVariations(int ich, |
| - wchar_t * prgchFontVar, int ichMax, int * pich, |
| - int * pichMin, int * pichLim) { return gr::kresNotImpl; }; |
| + virtual gr::GrResult Fetch(int /*ichMin*/, int /*ichLim*/, gr::utf16 * /*prgchBuf*/) { return gr::kresNotImpl; }; |
| + virtual gr::GrResult get_Length(int * /*pcch*/) { return gr::kresNotImpl; }; |
| + virtual gr::GrResult GetFontVariations(int /*ich*/, |
| + wchar_t * /*prgchFontVar*/, int /*ichMax*/, int * /*pich*/, |
| + int * /*pichMin*/, int * /*pichLim*/) { return gr::kresNotImpl; }; |
| |
| }; |
| |
| --- misc/silgraphite-2.3.1/engine/test/ProfileHarness/ProfileHarness.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/test/ProfileHarness/ProfileHarness.cpp Sat Aug 22 19:36:35 2009 |
| @@ -39,14 +39,14 @@ |
| typedef std::pair< gr::GlyphIterator, gr::GlyphIterator > GlyphRange; |
| |
| #ifndef HAVE_STRTOF |
| -float strtof(char * text, char ** ignore) |
| +float strtof(char * text, char ** /*ignore*/) |
| { |
| return static_cast<float>(atof(text)); |
| } |
| #endif |
| |
| #ifndef HAVE_STRTOL |
| -long strtol(char * text, char ** ignore) |
| +long strtol(char * text, char ** /*ignore*/) |
| { |
| return atol(text); |
| } |
| --- misc/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.cpp Sat Aug 22 19:36:35 2009 |
| @@ -327,7 +327,7 @@ |
| &dxStretchAchieved); |
| for (int iiiGlyph = 0; iiiGlyph < cStretchable; iiiGlyph++) |
| { |
| - int iiGlyph = viiGlyphsRem[iiiGlyph]; |
| + iiGlyph = viiGlyphsRem[iiiGlyph]; |
| vdxStretchLeft[iiGlyph] = vdxStretchRem[iiiGlyph]; |
| vdxWidth[iiGlyph] = vdxWidthRem[iiiGlyph]; |
| } |
| --- misc/silgraphite-2.3.1/engine/test/RegressionTest/RegressionTest.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/RegressionTest.cpp Sat Aug 22 19:36:35 2009 |
| @@ -675,7 +675,7 @@ |
| OutputErrorAux(ptcase, strErr, i, true, valueFound, valueExpected); |
| } |
| |
| -void OutputErrorAux(TestCase * ptcase, std::string strErr, int i, |
| +void OutputErrorAux(TestCase * /*ptcase*/, std::string strErr, int i, |
| bool showValues, int valueFound, int valueExpected) |
| { |
| // if (g_debugMode) |
| --- misc/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.cpp Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.cpp Sat Aug 22 19:36:36 2009 |
| @@ -70,7 +70,7 @@ |
| /*---------------------------------------------------------------------------------------------- |
| Return true if the text uses a right-to-left writing system. |
| ----------------------------------------------------------------------------------------------*/ |
| -bool SimpleTextSrc::getRightToLeft(toffset ich) |
| +bool SimpleTextSrc::getRightToLeft(toffset /*ich*/) |
| { |
| return false; |
| } |
| @@ -78,7 +78,7 @@ |
| /*---------------------------------------------------------------------------------------------- |
| Return the depth of embedding of the writing system. |
| ----------------------------------------------------------------------------------------------*/ |
| -unsigned int SimpleTextSrc::getDirectionDepth(toffset ich) |
| +unsigned int SimpleTextSrc::getDirectionDepth(toffset /*ich*/) |
| { |
| return 0; |
| } |
| @@ -87,7 +87,7 @@ |
| Return the vertical offset of the text. This simple implementation provides no |
| vertical offset. |
| ----------------------------------------------------------------------------------------------*/ |
| -float SimpleTextSrc::getVerticalOffset(toffset ich) |
| +float SimpleTextSrc::getVerticalOffset(toffset /*ich*/) |
| { |
| return 0; |
| } |
| --- misc/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.h Thu Jan 22 00:36:42 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.h Sat Aug 22 19:36:36 2009 |
| @@ -59,12 +59,12 @@ |
| { |
| return m_cchLength; |
| } |
| - virtual size_t fetch(toffset ichMin, size_t cch, utf32 * prgchBuffer) |
| + virtual size_t fetch(toffset /*ichMin*/, size_t /*cch*/, utf32 * /*prgchBuffer*/) |
| { |
| throw; |
| } |
| virtual size_t fetch(toffset ichMin, size_t cch, gr::utf16 * prgchwBuffer); |
| - virtual size_t fetch(toffset ichMin, size_t cch, utf8 * prgchsBuffer) |
| + virtual size_t fetch(toffset /*ichMin*/, size_t /*cch*/, utf8 * /*prgchsBuffer*/) |
| { |
| throw; |
| }; |
| @@ -73,14 +73,14 @@ |
| virtual unsigned int getDirectionDepth(toffset ich); |
| virtual float getVerticalOffset(toffset ich); |
| |
| - virtual isocode getLanguage(toffset ich) |
| + virtual isocode getLanguage(toffset /*ich*/) |
| { |
| isocode ret; |
| ret.rgch[0] = 'e'; ret.rgch[1] = 'n'; ret.rgch[2] = 0; ret.rgch[3] = 0; |
| return ret; |
| } |
| |
| - virtual std::pair<toffset, toffset> propertyRange(toffset ich) |
| + virtual std::pair<toffset, toffset> propertyRange(toffset /*ich*/) |
| { |
| std::pair<toffset, toffset> pairRet; |
| pairRet.first = 0; |
| @@ -88,16 +88,16 @@ |
| return pairRet; |
| } |
| |
| - virtual size_t getFontFeatures(toffset ich, FeatureSetting * prgfset) |
| + virtual size_t getFontFeatures(toffset /*ich*/, FeatureSetting * /*prgfset*/) |
| { |
| return 0; // no features in this simple implementation |
| } |
| - virtual bool sameSegment(toffset ich1, toffset ich2) |
| + virtual bool sameSegment(toffset /*ich1*/, toffset /*ich2*/) |
| { |
| return true; |
| } |
| |
| - virtual void getColors(toffset ich, int * pclrFore, int * pclrBack) |
| + virtual void getColors(toffset /*ich*/, int * pclrFore, int * pclrBack) |
| { |
| *pclrFore = kclrBlack; |
| *pclrBack = kclrTransparent; |
| --- misc/silgraphite-2.3.1/wrappers/win32/WinFont.cpp Thu Jan 29 10:33:19 2009 |
| +++ misc/build/silgraphite-2.3.1/wrappers/win32/WinFont.cpp Sat Aug 22 19:36:36 2009 |
| @@ -70,6 +72,7 @@ |
| // But don't store m_hfont, because we don't really "own" it; the client is |
| // responsible for releasing it. |
| m_hfont = 0; |
| + m_pGlyphMetricMap = NULL; |
| memset(&m_fpropSet, 0, sizeof(m_fpropSet)); |
| |
| m_pbCmapTbl = NULL; |
| @@ -196,6 +198,7 @@ |
| m_hdc = 0; |
| m_hfont = 0; |
| m_hfontClient = 0; |
| + m_pGlyphMetricMap = NULL; |
| memset(&m_fpropSet, 0, sizeof(FontProps)); |
| |
| m_pbCmapTbl = NULL; |
| @@ -408,7 +410,7 @@ |
| if (pPolyCurve->wType == TT_PRIM_QSPLINE && |
| // test if this is the last curve |
| pPolyHdr->cb - (int)((byte *)(&pPolyCurve->apfx[j]) - (byte *)(pPolyHdr)) |
| - == sizeof POINTFX && |
| + == sizeof (POINTFX) && |
| // and the two points are identical |
| CompareFixed(pPolyCurve->apfx[j].x, pPolyHdr->pfxStart.x) && |
| CompareFixed(pPolyCurve->apfx[j].y, pPolyHdr->pfxStart.y)) |
| @@ -457,6 +459,16 @@ |
| ----------------------------------------------------------------------------------------------*/ |
| void WinFont::getGlyphMetrics(gid16 chw, gr::Rect & boundingBox, gr::Point & advances) |
| { |
| + if (m_pGlyphMetricMap) |
| + { |
| + GlyphMetricMap::iterator i = m_pGlyphMetricMap->find(chw); |
| + if (i != m_pGlyphMetricMap->end()) |
| + { |
| + boundingBox = i->second.first; |
| + advances = i->second.second; |
| + return; |
| + } |
| + } |
| GLYPHMETRICS gm; |
| const MAT2 mat2 = {{0,1}, {0,0}, {0,0}, {0,1}}; |
| if (GDI_ERROR == ::GetGlyphOutline(m_hdc, chw, GGO_GLYPH_INDEX | GGO_METRICS, |
| @@ -474,6 +476,10 @@ |
| boundingBox.bottom = (float)gm.gmptGlyphOrigin.y - gm.gmBlackBoxY; |
| advances.x = gm.gmCellIncX; |
| advances.y = gm.gmCellIncY; |
| + if (m_pGlyphMetricMap) |
| + { |
| + (*m_pGlyphMetricMap)[chw] = std::pair<gr::Rect,gr::Point>(boundingBox, advances); |
| + } |
| } |
| |
| /*---------------------------------------------------------------------------------------------- |
| @@ -618,7 +620,10 @@ |
| |
| static int cCreateFontCalls = 0; |
| static int cCreateFontZero = 0; |
| - HFONT hfont = g_fhc.GetFont(lf); |
| + FontHandleCache::FontCacheValue cache = g_fhc.GetCache(lf); |
| + HFONT hfont = cache.hfont; |
| + m_pGlyphMetricMap = cache.pGlyphMetricMap; |
| + //HFONT hfont = g_fhc.GetFont(lf); |
| //char ch1[200]; |
| //if (hfont == 0) |
| //{ |
| @@ -731,7 +733,7 @@ |
| @param lf LOGFONT value that describes the desired font |
| @return Font handle |
| ----------------------------------------------------------------------------------------------*/ |
| -HFONT WinFont::FontHandleCache::GetFont(LOGFONT & lf) |
| +WinFont::FontHandleCache::FontCacheValue WinFont::FontHandleCache::GetCache(LOGFONT & lf) |
| { |
| FontCacheValue fcv; |
| FontHandleHashMap::iterator itFound = m_hmlffcv.find(lf); |
| @@ -752,11 +754,12 @@ |
| THROW(kresFail); |
| |
| fcv.nRefs = 1; |
| + fcv.pGlyphMetricMap = new GlyphMetricMap(); |
| |
| m_hmlffcv.insert(std::pair<LOGFONT, FontCacheValue>(lf, fcv)); |
| } |
| |
| - return fcv.hfont; |
| + return fcv; |
| } |
| |
| /*---------------------------------------------------------------------------------------------- |
| @@ -767,7 +767,7 @@ |
| ----------------------------------------------------------------------------------------------*/ |
| void WinFont::FontHandleCache::DeleteFont(HFONT hfont) |
| { |
| - if (!hfont || !m_bValid) |
| + if (!hfont || !m_bValid || m_hmlffcv.size() == 0) |
| return; |
| |
| // find the font in the hash map |
| @@ -782,6 +784,8 @@ |
| { |
| // delete font |
| ::DeleteObject(hfont); |
| + if (fcv.pGlyphMetricMap) |
| + delete fcv.pGlyphMetricMap; |
| m_hmlffcv.erase(it); |
| } |
| else |
| @@ -832,7 +832,8 @@ |
| bool WinFont::LogFontHashFuncs::operator() (const WinFont::LogFontWrapper & key1, |
| const WinFont::LogFontWrapper & key2) const |
| { |
| - return (key1 == key2); |
| + // return true if key1 should be ordered before key2 |
| + return (operator()(key1) < operator()(key2)); |
| } |
| |
| /*-------------------------------------------------------------------------------------- |
| --- misc/silgraphite-2.3.1/wrappers/win32/WinFont.h Thu Jan 29 10:33:19 2009 |
| +++ misc/build/silgraphite-2.3.1/wrappers/win32/WinFont.h Sat Aug 22 19:36:36 2009 |
| @@ -27,7 +27,13 @@ |
| #include "GrClient.h" |
| #include "Font.h" |
| +#include <map> |
| |
| +#ifdef _STLPORT_VERSION |
| +namespace stdext = _STLP_STD; |
| +#endif |
| + |
| namespace gr |
| { |
| +typedef std::map<gid16, std::pair<gr::Rect, gr::Point> > GlyphMetricMap; |
| |
| class FontFace; |
| @@ -100,6 +110,7 @@ |
| HFONT m_hfontClient; // need to replace this HFONT into the DC when we are finished |
| // with it |
| |
| + GlyphMetricMap * m_pGlyphMetricMap; |
| // Debugging: |
| //OLECHAR m_rgchTemp[32]; |
| |
| @@ -185,11 +196,13 @@ |
| class FontHandleCache // hungarian: fhc |
| { |
| public: |
| - struct FontCacheValue |
| + struct FontCacheValue |
| { |
| int nRefs; // reference count |
| HFONT hfont; // font handle |
| |
| + GlyphMetricMap * pGlyphMetricMap; // glyph metrics |
| + |
| bool operator==(const FontCacheValue & val) const |
| { |
| return (hfont == val.hfont); |
| @@ -199,7 +212,8 @@ |
| FontHandleCache() : m_bValid(true) {}; |
| ~FontHandleCache(); |
| |
| - HFONT GetFont(LOGFONT & lf); |
| + //HFONT GetFont(LOGFONT & lf); |
| + FontCacheValue GetCache(LOGFONT & lf); |
| void DeleteFont(HFONT hfont); |
| |
| typedef stdext::hash_map<LogFontWrapper, FontCacheValue, LogFontHashFuncs> FontHandleHashMap; |
| --- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/RtTextSrc.h~ 2009-01-22 05:06:42.000000000 +0630 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/RtTextSrc.h 2010-04-30 23:14:49.000000000 +0630 |
| @@ -44,18 +44,18 @@ |
| } |
| } |
| |
| - virtual size_t getFontFeatures(toffset ich, FeatureSetting * prgfset) |
| + virtual size_t getFontFeatures(toffset /*ich*/, FeatureSetting * prgfset) |
| { |
| // Note: size of prgfset buffer = gr::kMaxFeatures = 64 |
| std::copy(m_fset, m_fset + MAXFEAT, prgfset); |
| return m_cFeats; |
| } |
| |
| - virtual bool getRightToLeft(toffset ich) |
| + virtual bool getRightToLeft(toffset /*ich*/) |
| { |
| return m_fRtl; |
| } |
| - virtual unsigned int getDirectionDepth(toffset ich) |
| + virtual unsigned int getDirectionDepth(toffset /*ich*/) |
| { |
| return ((m_fRtl == 1) ? 1 : 0); |
| } |
| |
| --- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.cpp 2010-06-21 12:55:34.000000000 +0630 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.cpp 2010-06-21 13:16:59.000000000 +0630 |
| @@ -16,8 +16,9 @@ |
| //:> Include files |
| //:>******************************************************************************************** |
| //#include "main.h" // This is used by clients, so main.h is not available |
| - |
| +#ifdef _MSC_VER |
| #pragma hdrstop |
| +#endif |
| // any other headers (not precompiled) |
| #include "GrClient.h" |
| #include "ITextSource.h" |
| @@ -31,9 +32,6 @@ |
| #include <string> |
| #endif |
| |
| -#undef THIS_FILE |
| -DEFINE_THIS_FILE |
| - |
| //:>******************************************************************************************** |
| //:> Global constants |
| //:>******************************************************************************************** |
| @@ -327,9 +325,9 @@ |
| &dxStretchAchieved); |
| for (int iiiGlyph = 0; iiiGlyph < cStretchable; iiiGlyph++) |
| { |
| - iiGlyph = viiGlyphsRem[iiiGlyph]; |
| - vdxStretchLeft[iiGlyph] = vdxStretchRem[iiiGlyph]; |
| - vdxWidth[iiGlyph] = vdxWidthRem[iiiGlyph]; |
| + int ivGlyph = viiGlyphsRem[iiiGlyph]; |
| + vdxStretchLeft[ivGlyph] = vdxStretchRem[iiiGlyph]; |
| + vdxWidth[ivGlyph] = vdxWidthRem[iiiGlyph]; |
| } |
| } |
| else |
| @@ -366,12 +364,12 @@ |
| { |
| #ifdef WIN32 |
| wchar_t rgchw[20]; |
| - std::fill_n(rgchw, 20, 0); |
| + std::fill_n(rgchw, 20, L'\0'); |
| _itow(dxStretchNeeded - dxStretchAchieved, rgchw, 10); |
| std::wstring strTmp(L"justification failed by "); |
| strTmp += rgchw; |
| strTmp += L" units (width needed = "; |
| - std::fill_n(rgchw, 10, 0); |
| + std::fill_n(rgchw, 10, L'\0'); |
| _itow(dxDesiredWidth, rgchw, 10); |
| strTmp += rgchw; |
| strTmp += L")\n"; |
| --- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.h 2009-01-22 05:06:42.000000000 +0630 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.h 2010-06-21 13:16:49.000000000 +0630 |
| @@ -11,7 +11,9 @@ |
| Description: |
| A default justification agent for Graphite. |
| -------------------------------------------------------------------------------*//*:End Ignore*/ |
| +#ifdef _MSC_VER |
| #pragma once |
| +#endif |
| #ifndef GRJUSTIFIER_INCLUDED |
| #define GRJUSTIFIER_INCLUDED |
| |
| --- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.h 2010-06-21 12:55:34.000000000 +0630 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.h 2010-06-21 13:18:12.000000000 +0630 |
| @@ -11,7 +11,9 @@ |
| Description: |
| A simple text source that shows how to use this interface within Graphite. |
| -------------------------------------------------------------------------------*//*:End Ignore*/ |
| +#ifdef _MSC_VER |
| #pragma once |
| +#endif |
| #ifndef GRTXTSRC_INCLUDED |
| #define GRTXTSRC_INCLUDED |
| |
| |
| --- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.cpp 2010-06-21 12:55:34.000000000 +0630 |
| +++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.cpp 2010-06-21 13:18:24.000000000 +0630 |
| @@ -15,7 +15,9 @@ |
| //:>******************************************************************************************** |
| //:> Include files |
| //:>******************************************************************************************** |
| +#ifdef _MSC_VER |
| #pragma hdrstop |
| +#endif |
| // any other headers (not precompiled) |
| |
| #include "GrClient.h" |
| @@ -23,9 +25,6 @@ |
| #include "ITextSource.h" |
| #include "SimpleTextSrc.h" |
| |
| -#undef THIS_FILE |
| -DEFINE_THIS_FILE |
| - |
| //:>******************************************************************************************** |
| //:> Initialization and destruction |
| //:>******************************************************************************************** |
| --- misc/build/silgraphite-2.3.1/engine/src/segment/MemoryUsage.cpp 2009-01-22 05:06:42.000000000 +0630 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/MemoryUsage.cpp 2010-06-21 13:36:36.000000000 +0630 |
| @@ -11,10 +11,10 @@ |
| Description: |
| Calculates memory usage for the engine and segments. |
| ----------------------------------------------------------------------------------------------*/ |
| - |
| +#ifdef _MSC_VER |
| #pragma warning(disable: 4244) // conversion from wchar_t to char |
| #pragma warning(disable: 4702) // unreachable code |
| - |
| +#endif |
| //:>******************************************************************************************** |
| //:> Include files |
| //:>******************************************************************************************** |
| @@ -54,8 +54,6 @@ |
| #ifdef _MSC_VER |
| #pragma hdrstop |
| #endif |
| -#undef THIS_FILE |
| -DEFINE_THIS_FILE |
| |
| //:End Ignore |
| |
| --- misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotState.h 2010-06-23 19:52:56.429060400 +0700 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotState.h 2010-05-25 11:51:15.195066300 +0700 |
| @@ -48,7 +48,7 @@ |
| { |
| } |
| |
| - ~GrSlotAbstract() |
| + virtual ~GrSlotAbstract() |
| { |
| // the table manager is responsible for destroying the contents of m_prgnVarLenBuf |
| } |
| @@ -231,7 +231,7 @@ |
| ZapCompositeMetrics(); |
| } |
| |
| - ~GrSlotState() |
| + virtual ~GrSlotState() |
| { |
| } |
| |
| --- misc/silgraphite-2.3.1/engine/include/graphite/Segment.h 2009-01-29 09:33:19.000000000 +0100 |
| +++ misc/build/silgraphite-2.3.1/engine/include/graphite/Segment.h 2013-08-14 15:10:53.363864046 +0200 |
| @@ -64,7 +64,7 @@ |
| virtual ~Segment(); |
| |
| // Basic copy constructor: |
| - Segment(Segment & seg); |
| + Segment( const Segment&); |
| |
| // For making modified copies of segments: |
| static Segment * LineContextSegment(Segment & seg, bool fStartLine, bool fEndLine); |
| --- misc/build/silgraphite-2.3.1/engine/src/segment/Segment.cpp.bak 2010-06-23 19:59:54.611660400 +0700 |
| +++ misc/build/silgraphite-2.3.1/engine/src/segment/Segment.cpp 2010-06-23 21:30:16.335460400 +0700 |
| @@ -246,6 +246,8 @@ |
| |
| m_dxsVisibleWidth = -1; |
| m_dxsTotalWidth = -1; |
| + m_ichwAssocsMin = 0; |
| + m_ichwAssocsLim = 0; |
| |
| // m_psstrm = NULL; |
| m_prgslout = NULL; |
| @@ -435,7 +435,7 @@ |
| /*---------------------------------------------------------------------------------------------- |
| Basic copy method. |
| ----------------------------------------------------------------------------------------------*/ |
| -Segment::Segment(Segment & seg) |
| +Segment::Segment( const Segment& seg) |
| { |
| int islout; |
| |
| @@ -2988,9 +2988,10 @@ |
| return kresOk; |
| } |
| |
| - |
| +#ifdef __GNUC__ |
| // suppress GCC 4.3 warning for optimized min()/max() when called with (ich, ich+1) or similar |
| #pragma GCC diagnostic ignored "-Wstrict-overflow" |
| +#endif |
| |
| /*---------------------------------------------------------------------------------------------- |
| Merge the given characters into the same Uniscribe cluster. This means merging any |
| --- misc/build/silgraphite-2.3.1/wrappers/win32/win32_dll.cpp.bak 2008-05-09 18:10:30.000000000 +0700 |
| +++ misc/build/silgraphite-2.3.1/wrappers/win32/win32_dll.cpp 2010-05-10 15:46:54.291818000 +0700 |
| @@ -14,7 +14,7 @@ |
| DllMain. This is the main DLL entry point for a non-MFC DLL. For an MFC DLL, DllMain is |
| in DllModul.cpp. Both DllMains call ModuleEntry::DllMain. |
| ----------------------------------------------------------------------------------------------*/ |
| -extern "C" BOOL WINAPI DllMain(HMODULE hmod, DWORD dwReason, PVOID pvReserved) |
| +extern "C" BOOL WINAPI DllMain(HMODULE hmod, DWORD dwReason, PVOID /*pvReserved*/) |
| { |
| bool fRet = true; |
| |
| --- misc/silgraphite-2.3.1/engine/include/graphite/GrFeature.h 2009-01-21 17:36:40.000000000 -0500 |
| +++ misc/build/silgraphite-2.3.1/engine/include/graphite/GrFeature.h 2013-01-15 15:38:54.000000000 -0500 |
| @@ -21,6 +21,10 @@ |
| |
| //:End Ignore |
| |
| +#ifdef __FreeBSD__ |
| +#define wstring basic_string<wchar_t> //quick dirty hack for not finding _STL::wstring |
| +#endif |
| + |
| #include "GrAppData.h" |
| |
| namespace gr |
| --- misc/silgraphite-2.3.1/engine/include/graphite/SegmentAux.h Thu Jan 22 00:36:40 2009 |
| +++ misc/build/silgraphite-2.3.1/engine/include/graphite/SegmentAux.h Sat Aug 22 19:36:32 2009 |
| @@ -232,8 +232,12 @@ |
| protected: |
| // Constructor that includes output-slot mapping list, used for non-contiguous lists: |
| GlyphSetIterator(Segment & seg, size_t islout, RcVector * qvislout) |
| - : m_pseg(&seg), m_vit(qvislout->Vector().begin() + islout) |
| + : m_pseg(&seg), m_vit(qvislout->Vector().begin()) |
| { |
| + if( islout < qvislout->Vector().size()) |
| + m_vit += islout; |
| + else |
| + m_vit = qvislout->Vector().end(); |
| m_qvislout = qvislout; |
| m_qvislout->IncRefCount(); |
| } |
| @@ -289,7 +293,7 @@ |
| |
| // Relational operators. |
| // Forward iterator requirements |
| - bool operator==(const GlyphSetIterator & rhs) const throw() { return m_vit == rhs.m_vit; } |
| + bool operator==(const GlyphSetIterator & rhs) const throw() { return (m_qvislout == NULL) || (m_vit == rhs.m_vit); } |
| bool operator!=(const GlyphSetIterator & rhs) const throw() { return !(*this == rhs); } |
| |
| // Random access iterator requirements |