1*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/include/graphite/GrCommon.h	Thu Jan 22 00:36:40 2009
2*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/include/graphite/GrCommon.h	Sat Aug 22 19:36:32 2009
3*b1cdbd2cSJim Jagielski@@ -18,6 +18,8 @@
4*b1cdbd2cSJim Jagielski #ifndef GRCOMMON_INCLUDED
5*b1cdbd2cSJim Jagielski #define GRCOMMON_INCLUDED
6*b1cdbd2cSJim Jagielski
7*b1cdbd2cSJim Jagielski+#define _SECURE_SCL 0	// to allow GlyphSetIterator to work, which points off the end of a vector
8*b1cdbd2cSJim Jagielski+#define _HAS_ITERATOR_DEBUGGING 0
9*b1cdbd2cSJim Jagielski
10*b1cdbd2cSJim Jagielski // Standard Headers.
11*b1cdbd2cSJim Jagielski
12*b1cdbd2cSJim Jagielski@@ -33,6 +35,7 @@
13*b1cdbd2cSJim Jagielski #include <vector>
14*b1cdbd2cSJim Jagielski #include <algorithm>
15*b1cdbd2cSJim Jagielski #include <string>
16*b1cdbd2cSJim Jagielski+///#include <stdexcept> -- possibly needed for std::string Xran and Xlen functions??
17*b1cdbd2cSJim Jagielski
18*b1cdbd2cSJim Jagielski // Uncomment this to allow multiple versions of gr to coexist
19*b1cdbd2cSJim Jagielski // in the same program e.g. pangographite with gtk uses namespace gr
20*b1cdbd2cSJim Jagielski@@ -41,7 +44,7 @@
21*b1cdbd2cSJim Jagielski // Provided the client includes GrClient.h first this #define is
22*b1cdbd2cSJim Jagielski // picked up by all files.
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski-//#define gr gr2
25*b1cdbd2cSJim Jagielski+#define gr gr3ooo
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski // Project headers
28*b1cdbd2cSJim Jagielski #include "GrPlatform.h"
29*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/include/graphite/GrMstypes.h	Thu Jan 22 00:36:40 2009
30*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/include/graphite/GrMstypes.h	Sat Aug 22 19:36:32 2009
31*b1cdbd2cSJim Jagielski@@ -24,11 +24,11 @@
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski typedef signed long	    HRESULT;
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski-inline const long InterlockedIncrement(long *const intr_lck) {
36*b1cdbd2cSJim Jagielski+inline long InterlockedIncrement(long *const intr_lck) {
37*b1cdbd2cSJim Jagielski 	return ++*intr_lck;
38*b1cdbd2cSJim Jagielski }
39*b1cdbd2cSJim Jagielski
40*b1cdbd2cSJim Jagielski-inline const long InterlockedDecrement(long *const intr_lck) {
41*b1cdbd2cSJim Jagielski+inline long InterlockedDecrement(long *const intr_lck) {
42*b1cdbd2cSJim Jagielski 	return --*intr_lck;
43*b1cdbd2cSJim Jagielski }
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/makefile.vc7	Thu Aug 21 16:24:32 2008
46*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/makefile.vc7	Sat Aug 22 19:36:32 2009
47*b1cdbd2cSJim Jagielski@@ -48,11 +48,7 @@
48*b1cdbd2cSJim Jagielski CPP_DEBUG=/D "TRACING" $(CPP_DEBUG)
49*b1cdbd2cSJim Jagielski !ENDIF
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski-!IF "$(OS)" == "Windows_NT"
52*b1cdbd2cSJim Jagielski NULL=
53*b1cdbd2cSJim Jagielski-!ELSE
54*b1cdbd2cSJim Jagielski-NULL=nul
55*b1cdbd2cSJim Jagielski-!ENDIF
56*b1cdbd2cSJim Jagielski
57*b1cdbd2cSJim Jagielski clean :
58*b1cdbd2cSJim Jagielski     @- rd /s/q .\release_temp
59*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/makefile.vc8	Sat Aug 22 21:58:25 2009
60*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/makefile.vc8	Sat Aug 22 21:57:42 2009
61*b1cdbd2cSJim Jagielski@@ -2,11 +2,16 @@
62*b1cdbd2cSJim Jagielski TARGET=graphite
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski CPP=cl.exe
65*b1cdbd2cSJim Jagielski-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
66*b1cdbd2cSJim Jagielski+### HDU: disabled building with the normal compile flags
67*b1cdbd2cSJim Jagielski+###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
68*b1cdbd2cSJim Jagielski+### HDU: because for full binary compatibility with the rest of OOo all compile flags must match exactly
69*b1cdbd2cSJim Jagielski+###       which is especially true for template-heavy C++ code with non-default config (e.g. _STLP_DEBUG enabled)
70*b1cdbd2cSJim Jagielski+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
71*b1cdbd2cSJim Jagielski+
72*b1cdbd2cSJim Jagielski # /Wp62
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski LINK=link.exe
75*b1cdbd2cSJim Jagielski-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"
76*b1cdbd2cSJim Jagielski+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"
77*b1cdbd2cSJim Jagielski
78*b1cdbd2cSJim Jagielski BSC32=bscmake.exe
79*b1cdbd2cSJim Jagielski BSC32_FLAGS=/nologo /o"$(OUTDIR)\\$(TARGET).bsc"
80*b1cdbd2cSJim Jagielski@@ -24,21 +29,21 @@
81*b1cdbd2cSJim Jagielski SBREXT = .sbr
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski !IF "$(CFG)" == "DEBUG"
84*b1cdbd2cSJim Jagielski-CPP_DEBUG=/D "DEBUG" /Gm /GR /ZI /Od /RTC1 /FR"$(INTDIR)\\" /$(MLIB)d
85*b1cdbd2cSJim Jagielski+CPP_DEBUG=/D "DEBUG" /Gm /GR /Od /RTC1 /FR"$(INTDIR)\\"
86*b1cdbd2cSJim Jagielski # CPP_DEBUG=/D "DEBUG" /Gm /GR /ZI /Od /RTC1 /FR"$(INTDIR)\\" /MDd
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski OUTDIR=.\debug
89*b1cdbd2cSJim Jagielski INTDIR=.\debug_temp
90*b1cdbd2cSJim Jagielski-LINK_DEBUG= MSVCRTD.lib /debug /incremental:yes #/pdbtype:sept
91*b1cdbd2cSJim Jagielski+LINK_DEBUG= /debug
92*b1cdbd2cSJim Jagielski
93*b1cdbd2cSJim Jagielski all : lib lib_dll bsc
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski !ELSE
96*b1cdbd2cSJim Jagielski-CPP_DEBUG=/D "NDEBUG" /O2 /$(MLIB)
97*b1cdbd2cSJim Jagielski+CPP_DEBUG=/D "NDEBUG" /O2
98*b1cdbd2cSJim Jagielski # CPP_DEBUG=/D "NDEBUG" /O2 /MD
99*b1cdbd2cSJim Jagielski OUTDIR=.\release
100*b1cdbd2cSJim Jagielski INTDIR=.\release_temp
101*b1cdbd2cSJim Jagielski-LINK_DEBUG= MSVCRT.lib /incremental:no /NODEFAULTLIB:libc
102*b1cdbd2cSJim Jagielski+LINK_DEBUG= /incremental:no /NODEFAULTLIB:libc
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski all : lib lib_dll
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski@@ -48,11 +53,7 @@
107*b1cdbd2cSJim Jagielski CPP_DEBUG=/D "TRACING" $(CPP_DEBUG)
108*b1cdbd2cSJim Jagielski !ENDIF
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski-!IF "$(OS)" == "Windows_NT"
111*b1cdbd2cSJim Jagielski NULL=
112*b1cdbd2cSJim Jagielski-!ELSE
113*b1cdbd2cSJim Jagielski-NULL=nul
114*b1cdbd2cSJim Jagielski-!ENDIF
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski clean :
117*b1cdbd2cSJim Jagielski     @- rd /s/q .\release_temp
118*b1cdbd2cSJim Jagielski@@ -779,7 +780,7 @@
119*b1cdbd2cSJim Jagielski 	@- $(CPP) $(CPPFLAGS) $(CPP_DEBUG) /Fo"$(INTDIR)\FileFont$(OBJEXT)" $?
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski "$(INTDIR)\FileFont_dll$(OBJEXT)" : "src/font/FileFont.cpp"
122*b1cdbd2cSJim Jagielski-	@- $(CPP) $(CPPFLAGS) /D "_DLL" /Fo"$(INTDIR)\FileFont_dll$(OBJEXT)" $?
123*b1cdbd2cSJim Jagielski+	$(CPP) $(CPPFLAGS) /D "_DLL" /Fo"$(INTDIR)\FileFont_dll$(OBJEXT)" $?
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim Jagielski !ENDIF
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/font/FileFont.cpp	Thu Jan 22 00:36:42 2009
128*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/font/FileFont.cpp	Sat Aug 22 19:36:32 2009
129*b1cdbd2cSJim Jagielski@@ -207,11 +207,11 @@
130*b1cdbd2cSJim Jagielski 				cch16 += cch16Used;
131*b1cdbd2cSJim Jagielski 			}
132*b1cdbd2cSJim Jagielski //		}
133*b1cdbd2cSJim Jagielski-#else
134*b1cdbd2cSJim Jagielski+#elif 1
135*b1cdbd2cSJim Jagielski 		m_stuFaceName.assign(rgchwFace);
136*b1cdbd2cSJim Jagielski-		// VS 2005 needs this:
137*b1cdbd2cSJim Jagielski-		//for (int cch16 = 0; cch16 < cchw; cch16++)
138*b1cdbd2cSJim Jagielski-		//	m_stuFaceName.push_back(rgchwFace[cch16]);
139*b1cdbd2cSJim Jagielski+#else	// VS 2005 needs this:
140*b1cdbd2cSJim Jagielski+		for (int cch16 = 0; cch16 < cchw; cch16++)
141*b1cdbd2cSJim Jagielski+			m_stuFaceName.push_back(rgchwFace[cch16]);
142*b1cdbd2cSJim Jagielski #endif
143*b1cdbd2cSJim Jagielski 		pTable = readTable(ktiHead, lSize);
144*b1cdbd2cSJim Jagielski 		if (!m_fIsValid || !pTable)
145*b1cdbd2cSJim Jagielski@@ -233,7 +233,7 @@
146*b1cdbd2cSJim Jagielski FileFont::readTable(int /*TableId*/ tid, size_t & size)
147*b1cdbd2cSJim Jagielski {
148*b1cdbd2cSJim Jagielski 	const TableId tableId = TableId(tid);
149*b1cdbd2cSJim Jagielski-	bool isValid = true;
150*b1cdbd2cSJim Jagielski+	bool isTableValid = true;
151*b1cdbd2cSJim Jagielski 	size_t lOffset = 0, lSize = 0;
152*b1cdbd2cSJim Jagielski 	if (!m_pTableCache)
153*b1cdbd2cSJim Jagielski 	{
154*b1cdbd2cSJim Jagielski@@ -245,9 +245,9 @@
155*b1cdbd2cSJim Jagielski 	size = m_pTableCache->getTableSize(tableId);
156*b1cdbd2cSJim Jagielski 	// check whether it is already in the cache
157*b1cdbd2cSJim Jagielski 	if (pTable) return pTable;
158*b1cdbd2cSJim Jagielski-	isValid &= TtfUtil::GetTableInfo(tableId, m_pHeader, m_pTableDir,
159*b1cdbd2cSJim Jagielski+	isTableValid &= TtfUtil::GetTableInfo(tableId, m_pHeader, m_pTableDir,
160*b1cdbd2cSJim Jagielski 			lOffset, lSize);
161*b1cdbd2cSJim Jagielski-	if (!isValid)
162*b1cdbd2cSJim Jagielski+	if (!isTableValid)
163*b1cdbd2cSJim Jagielski 		return NULL;
164*b1cdbd2cSJim Jagielski 	fseek(m_pfile, lOffset, SEEK_SET);
165*b1cdbd2cSJim Jagielski 	// only allocate if needed
166*b1cdbd2cSJim Jagielski@@ -255,16 +255,16 @@
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski 	if (!pTable)
169*b1cdbd2cSJim Jagielski 	{
170*b1cdbd2cSJim Jagielski-		isValid = false;
171*b1cdbd2cSJim Jagielski+		isTableValid = false;
172*b1cdbd2cSJim Jagielski 		return NULL;
173*b1cdbd2cSJim Jagielski 	}
174*b1cdbd2cSJim Jagielski 	size_t bytesRead = fread(pTable, 1, lSize, m_pfile);
175*b1cdbd2cSJim Jagielski-	isValid = bytesRead == lSize;
176*b1cdbd2cSJim Jagielski-	if (isValid)
177*b1cdbd2cSJim Jagielski+	isTableValid = bytesRead == lSize;
178*b1cdbd2cSJim Jagielski+	if (isTableValid)
179*b1cdbd2cSJim Jagielski 	{
180*b1cdbd2cSJim Jagielski-		isValid &= TtfUtil::CheckTable(tableId, pTable, lSize);
181*b1cdbd2cSJim Jagielski+		isTableValid &= TtfUtil::CheckTable(tableId, pTable, lSize);
182*b1cdbd2cSJim Jagielski 	}
183*b1cdbd2cSJim Jagielski-	if (!isValid)
184*b1cdbd2cSJim Jagielski+	if (!isTableValid)
185*b1cdbd2cSJim Jagielski 	{
186*b1cdbd2cSJim Jagielski 		return 0;
187*b1cdbd2cSJim Jagielski 	}
188*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/font/Font.cpp	Tue May 20 08:04:16 2008
189*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/font/Font.cpp	Sat Aug 22 19:36:33 2009
190*b1cdbd2cSJim Jagielski@@ -626,7 +626,7 @@
191*b1cdbd2cSJim Jagielski 		Assert(false);
192*b1cdbd2cSJim Jagielski 		m_ifeat = m_cfeat;
193*b1cdbd2cSJim Jagielski 	}
194*b1cdbd2cSJim Jagielski-	else if (m_ifeat + n < 0)
195*b1cdbd2cSJim Jagielski+	else if (static_cast<int>(m_ifeat) + n < 0)
196*b1cdbd2cSJim Jagielski 	{
197*b1cdbd2cSJim Jagielski 		// Can't decrement.
198*b1cdbd2cSJim Jagielski 		Assert(false);
199*b1cdbd2cSJim Jagielski@@ -727,7 +727,7 @@
200*b1cdbd2cSJim Jagielski 		Assert(false);
201*b1cdbd2cSJim Jagielski 		m_ifset = m_cfset;
202*b1cdbd2cSJim Jagielski 	}
203*b1cdbd2cSJim Jagielski-	if (m_ifset + n < 0)
204*b1cdbd2cSJim Jagielski+	if (static_cast<int>(m_ifset) + n < 0)
205*b1cdbd2cSJim Jagielski 	{
206*b1cdbd2cSJim Jagielski 		// Can't decrement.
207*b1cdbd2cSJim Jagielski 		Assert(false);
208*b1cdbd2cSJim Jagielski@@ -820,7 +820,7 @@
209*b1cdbd2cSJim Jagielski 		Assert(false);
210*b1cdbd2cSJim Jagielski 		m_ilang = m_clang;
211*b1cdbd2cSJim Jagielski 	}
212*b1cdbd2cSJim Jagielski-	else if (m_ilang + n < 0)
213*b1cdbd2cSJim Jagielski+	else if (static_cast<int>(m_ilang) + n < 0)
214*b1cdbd2cSJim Jagielski 	{
215*b1cdbd2cSJim Jagielski 		// Can't decrement.
216*b1cdbd2cSJim Jagielski 		Assert(false);
217*b1cdbd2cSJim Jagielski@@ -906,7 +906,7 @@
218*b1cdbd2cSJim Jagielski 		Assert(false);
219*b1cdbd2cSJim Jagielski 		m_ilang = m_clang;
220*b1cdbd2cSJim Jagielski 	}
221*b1cdbd2cSJim Jagielski-	else if (m_ilang + n < 0)
222*b1cdbd2cSJim Jagielski+	else if (static_cast<int>(m_ilang) + n < 0)
223*b1cdbd2cSJim Jagielski 	{
224*b1cdbd2cSJim Jagielski 		// Can't decrement.
225*b1cdbd2cSJim Jagielski 		Assert(false);
226*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/font/TtfUtil.cpp	Thu Jan 29 10:33:19 2009
227*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/font/TtfUtil.cpp	Sat Aug 22 19:36:33 2009
228*b1cdbd2cSJim Jagielski@@ -492,7 +492,7 @@
229*b1cdbd2cSJim Jagielski 	const Sfnt::FontHeader * pTable =
230*b1cdbd2cSJim Jagielski 			reinterpret_cast<const Sfnt::FontHeader *>(pHead);
231*b1cdbd2cSJim Jagielski
232*b1cdbd2cSJim Jagielski-	return read(((pTable->mac_style) & 0x00000002) != 0);
233*b1cdbd2cSJim Jagielski+	return ((read(pTable->mac_style) & 0x00000002) != 0);
234*b1cdbd2cSJim Jagielski }
235*b1cdbd2cSJim Jagielski
236*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
237*b1cdbd2cSJim Jagielski@@ -1108,8 +1108,8 @@
238*b1cdbd2cSJim Jagielski 	{ // loca entries are two bytes and have been divided by two
239*b1cdbd2cSJim Jagielski 		if (nGlyphId <= (lLocaSize >> 1) - 1) // allow sentinel value to be accessed
240*b1cdbd2cSJim Jagielski 		{
241*b1cdbd2cSJim Jagielski-			const uint16 * pTable = reinterpret_cast<const uint16 *>(pLoca);
242*b1cdbd2cSJim Jagielski-			return (read(pTable[nGlyphId]) << 1);
243*b1cdbd2cSJim Jagielski+			const uint16 * pTableLoca = reinterpret_cast<const uint16 *>(pLoca);
244*b1cdbd2cSJim Jagielski+			return (read(pTableLoca[nGlyphId]) << 1);
245*b1cdbd2cSJim Jagielski 		}
246*b1cdbd2cSJim Jagielski 	}
247*b1cdbd2cSJim Jagielski
248*b1cdbd2cSJim Jagielski@@ -1117,8 +1117,8 @@
249*b1cdbd2cSJim Jagielski 	{ // loca entries are four bytes
250*b1cdbd2cSJim Jagielski 		if (nGlyphId <= (lLocaSize >> 2) - 1)
251*b1cdbd2cSJim Jagielski 		{
252*b1cdbd2cSJim Jagielski-			const uint32 * pTable = reinterpret_cast<const uint32 *>(pLoca);
253*b1cdbd2cSJim Jagielski-			return read(pTable[nGlyphId]);
254*b1cdbd2cSJim Jagielski+			const uint32 * pTableLoca = reinterpret_cast<const uint32 *>(pLoca);
255*b1cdbd2cSJim Jagielski+			return read(pTableLoca[nGlyphId]);
256*b1cdbd2cSJim Jagielski 		}
257*b1cdbd2cSJim Jagielski 	}
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski@@ -1586,7 +1586,7 @@
260*b1cdbd2cSJim Jagielski
261*b1cdbd2cSJim Jagielski 	for (size_t i = 0; i < cCompId; i++)
262*b1cdbd2cSJim Jagielski 	{
263*b1cdbd2cSJim Jagielski-		void * pSimpleGlyf = GlyfLookup(static_cast<gr::gid16>(rgnCompId[i]),
264*b1cdbd2cSJim Jagielski+		pSimpleGlyf = GlyfLookup(static_cast<gr::gid16>(rgnCompId[i]),
265*b1cdbd2cSJim Jagielski 										pGlyf, pLoca, lLocaSize, pHead);
266*b1cdbd2cSJim Jagielski 		if (pSimpleGlyf == NULL) {return false;}
267*b1cdbd2cSJim Jagielski
268*b1cdbd2cSJim Jagielski@@ -1748,7 +1748,7 @@
269*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
270*b1cdbd2cSJim Jagielski bool GlyfPoints(gr::gid16 nGlyphId, const void * pGlyf,
271*b1cdbd2cSJim Jagielski 		const void * pLoca, size_t lLocaSize, const void * pHead,
272*b1cdbd2cSJim Jagielski-		const int * prgnContourEndPoint, size_t cnEndPoints,
273*b1cdbd2cSJim Jagielski+		const int * /*prgnContourEndPoint*/, size_t /*cnEndPoints*/,
274*b1cdbd2cSJim Jagielski 		int * prgnX, int * prgnY, bool * prgfOnCurve, size_t cnPoints)
275*b1cdbd2cSJim Jagielski {
276*b1cdbd2cSJim Jagielski 	std::fill_n(prgnX, cnPoints, INT_MAX);
277*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/painter/SegmentPainter.cpp	Wed Jan 28 04:01:29 2009
278*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/painter/SegmentPainter.cpp	Sat Aug 22 19:36:33 2009
279*b1cdbd2cSJim Jagielski@@ -353,7 +353,7 @@
280*b1cdbd2cSJim Jagielski 	@param bOn				- true if we are turning on (ignored in this implementation)
281*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
282*b1cdbd2cSJim Jagielski bool SegmentPainter::drawSelectionRange(int ichwAnchor, int ichwEnd,
283*b1cdbd2cSJim Jagielski-	float ydLineTop, float ydLineBottom, bool bOn)
284*b1cdbd2cSJim Jagielski+	float ydLineTop, float ydLineBottom, bool /*bOn*/)
285*b1cdbd2cSJim Jagielski {
286*b1cdbd2cSJim Jagielski 	if (g_fDrawing)
287*b1cdbd2cSJim Jagielski 		return true;
288*b1cdbd2cSJim Jagielski@@ -993,7 +993,7 @@
289*b1cdbd2cSJim Jagielski 								an I-beam (std selection)
290*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
291*b1cdbd2cSJim Jagielski void SegmentPainter::CalcOrDrawInsertionPoint(
292*b1cdbd2cSJim Jagielski-	int ichwIP, bool fAssocPrev, bool bOn, bool fForceSplit,
293*b1cdbd2cSJim Jagielski+	int ichwIP, bool fAssocPrev, bool /*bOn*/, bool fForceSplit,
294*b1cdbd2cSJim Jagielski 	Rect * prdPrimary, Rect * prdSecondary)
295*b1cdbd2cSJim Jagielski {
296*b1cdbd2cSJim Jagielski 	GrResult res = kresOk;
297*b1cdbd2cSJim Jagielski@@ -1277,7 +1277,7 @@
298*b1cdbd2cSJim Jagielski 							if NULL, do the drawing
299*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
300*b1cdbd2cSJim Jagielski void SegmentPainter::InvertIBeam(float xs, float ysTop, float ysBottom,
301*b1cdbd2cSJim Jagielski-	bool fAssocPrev, Rect * prdRet)
302*b1cdbd2cSJim Jagielski+	bool /*fAssocPrev*/, Rect * prdRet)
303*b1cdbd2cSJim Jagielski {
304*b1cdbd2cSJim Jagielski 	float xd = ScaleXToDest(xs);
305*b1cdbd2cSJim Jagielski 	float ydTop = ScaleYToDest(ysTop);
306*b1cdbd2cSJim Jagielski@@ -1675,7 +1675,7 @@
307*b1cdbd2cSJim Jagielski }
308*b1cdbd2cSJim Jagielski
309*b1cdbd2cSJim Jagielski bool SegmentPainter::AtEdgeOfCluster(GrSlotOutput * psloutBase, int isloutBase,
310*b1cdbd2cSJim Jagielski-	GrSlotOutput * pslout, int islout, bool fBefore)
311*b1cdbd2cSJim Jagielski+	GrSlotOutput * /*pslout*/, int islout, bool fBefore)
312*b1cdbd2cSJim Jagielski {
313*b1cdbd2cSJim Jagielski 	//	Compare pslout to all the members of the cluster. If it is the minimum or maximum, it
314*b1cdbd2cSJim Jagielski 	//	is at an edge.
315*b1cdbd2cSJim Jagielski@@ -1778,12 +1778,12 @@
316*b1cdbd2cSJim Jagielski 			}
317*b1cdbd2cSJim Jagielski 			for (icomp = 0; icomp < pslout->NumberOfComponents(); icomp++)
318*b1cdbd2cSJim Jagielski 			{
319*b1cdbd2cSJim Jagielski-				for (int ichw = pslout->FirstUnderlyingComponent(icomp) ;
320*b1cdbd2cSJim Jagielski-					ichw <= pslout->LastUnderlyingComponent(icomp) ;
321*b1cdbd2cSJim Jagielski-					ichw++)
322*b1cdbd2cSJim Jagielski+				for (int ichwTemp = pslout->FirstUnderlyingComponent(icomp) ;
323*b1cdbd2cSJim Jagielski+					ichwTemp <= pslout->LastUnderlyingComponent(icomp) ;
324*b1cdbd2cSJim Jagielski+					ichwTemp++)
325*b1cdbd2cSJim Jagielski 				{
326*b1cdbd2cSJim Jagielski-					if (m_pseg->m_prgiComponent[ichw - m_pseg->m_ichwAssocsMin] == icomp)
327*b1cdbd2cSJim Jagielski-						prgfAllSelected[ichw] = fAll;
328*b1cdbd2cSJim Jagielski+					if (m_pseg->m_prgiComponent[ichwTemp - m_pseg->m_ichwAssocsMin] == icomp)
329*b1cdbd2cSJim Jagielski+						prgfAllSelected[ichwTemp] = fAll;
330*b1cdbd2cSJim Jagielski 				}
331*b1cdbd2cSJim Jagielski 			}
332*b1cdbd2cSJim Jagielski 		}
333*b1cdbd2cSJim Jagielski@@ -2304,7 +2304,11 @@
334*b1cdbd2cSJim Jagielski 	Assert that there are no overlaps among all the rectangles in the array, which should
335*b1cdbd2cSJim Jagielski 	be the case if AdjustRectsToNotOverlap is working properly.
336*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
337*b1cdbd2cSJim Jagielski+#ifdef _DEBUG
338*b1cdbd2cSJim Jagielski void SegmentPainter::AssertNoOverlaps(std::vector<Rect> & vrect)
339*b1cdbd2cSJim Jagielski+#else
340*b1cdbd2cSJim Jagielski+void SegmentPainter::AssertNoOverlaps(std::vector<Rect> & /*vrect*/)
341*b1cdbd2cSJim Jagielski+#endif
342*b1cdbd2cSJim Jagielski {
343*b1cdbd2cSJim Jagielski #ifdef _DEBUG
344*b1cdbd2cSJim Jagielski 	for (int irect1 = 0; irect1 < signed(vrect.size() - 1); irect1++)
345*b1cdbd2cSJim Jagielski@@ -2452,7 +2456,11 @@
346*b1cdbd2cSJim Jagielski 	Assert that there are no overlaps among all the rectangles in the array, which should
347*b1cdbd2cSJim Jagielski 	be the case if AdjustRectsToNotOverlap is working properly.
348*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
349*b1cdbd2cSJim Jagielski+#ifdef _DEBUG
350*b1cdbd2cSJim Jagielski void SegmentPainter::AssertNoOverlaps(std::vector<LineSeg> & vls)
351*b1cdbd2cSJim Jagielski+#else
352*b1cdbd2cSJim Jagielski+void SegmentPainter::AssertNoOverlaps(std::vector<LineSeg> & /*vls*/)
353*b1cdbd2cSJim Jagielski+#endif
354*b1cdbd2cSJim Jagielski {
355*b1cdbd2cSJim Jagielski #ifdef _DEBUG
356*b1cdbd2cSJim Jagielski 	for (int ils1 = 0; ils1 < (int)vls.size() - 1; ils1++)
357*b1cdbd2cSJim Jagielski@@ -2884,7 +2892,7 @@
358*b1cdbd2cSJim Jagielski 	{
359*b1cdbd2cSJim Jagielski 		if (icompNext != icompCurr)
360*b1cdbd2cSJim Jagielski 		{
361*b1cdbd2cSJim Jagielski-			float xsHorizNext = (fIPOnRight) ? vxsRights[icompNext] : vxsLefts[icompNext];
362*b1cdbd2cSJim Jagielski+			xsHorizNext = (fIPOnRight) ? vxsRights[icompNext] : vxsLefts[icompNext];
363*b1cdbd2cSJim Jagielski 			if (fMovingRight && xsHorizNext > xsHorizCurr)
364*b1cdbd2cSJim Jagielski 				break;
365*b1cdbd2cSJim Jagielski 			else if (!fMovingRight && xsHorizNext < xsHorizCurr)
366*b1cdbd2cSJim Jagielski@@ -2996,7 +3004,7 @@
367*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
368*b1cdbd2cSJim Jagielski 	Make sure the font is set to use the character properties required by this segment.
369*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
370*b1cdbd2cSJim Jagielski-void SegmentPainter::SetFontProps(unsigned long clrFore, unsigned long clrBack)
371*b1cdbd2cSJim Jagielski+void SegmentPainter::SetFontProps(unsigned long /*clrFore*/, unsigned long /*clrBack*/)
372*b1cdbd2cSJim Jagielski {
373*b1cdbd2cSJim Jagielski 	return;
374*b1cdbd2cSJim Jagielski }
375*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/FileInput.cpp	Thu Jan 22 00:36:42 2009
376*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/FileInput.cpp	Sat Aug 22 19:36:33 2009
377*b1cdbd2cSJim Jagielski@@ -80,7 +80,7 @@
378*b1cdbd2cSJim Jagielski #ifdef GR_FW
379*b1cdbd2cSJim Jagielski bool GrBufferIStream::Open(std::wstring stuFileName, int kMode)
380*b1cdbd2cSJim Jagielski #else
381*b1cdbd2cSJim Jagielski-bool GrBufferIStream::Open(const char * pcFileName, std::ios::openmode kMode)
382*b1cdbd2cSJim Jagielski+bool GrBufferIStream::Open(const char * /*pcFileName*/, std::ios::openmode /*kMode*/)
383*b1cdbd2cSJim Jagielski #endif
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski 	Assert(false); // use OpenBuffer
386*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrCharStream.cpp	Thu Jan 22 00:36:42 2009
387*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrCharStream.cpp	Sat Aug 22 19:36:33 2009
388*b1cdbd2cSJim Jagielski@@ -417,8 +417,11 @@
389*b1cdbd2cSJim Jagielski 	return true;
390*b1cdbd2cSJim Jagielski */
391*b1cdbd2cSJim Jagielski }
392*b1cdbd2cSJim Jagielski-
393*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
394*b1cdbd2cSJim Jagielski+bool GrCharStream::AtUnicodeCharBoundary(utf8 * prgchs, int cchs, int ichs, UtfType /*utf*/)
395*b1cdbd2cSJim Jagielski+#else
396*b1cdbd2cSJim Jagielski bool GrCharStream::AtUnicodeCharBoundary(utf8 * prgchs, int cchs, int ichs, UtfType utf)
397*b1cdbd2cSJim Jagielski+#endif
398*b1cdbd2cSJim Jagielski {
399*b1cdbd2cSJim Jagielski 	Assert(ichs >= 0);
400*b1cdbd2cSJim Jagielski 	Assert(ichs <= cchs);
401*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrClassTable.h	Thu Jan 22 00:36:42 2009
402*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrClassTable.h	Sat Aug 22 19:36:33 2009
403*b1cdbd2cSJim Jagielski@@ -54,7 +54,11 @@
404*b1cdbd2cSJim Jagielski 	/*------------------------------------------------------------------------------------------
405*b1cdbd2cSJim Jagielski 		Copy the raw memory into the instance.
406*b1cdbd2cSJim Jagielski 	------------------------------------------------------------------------------------------*/
407*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
408*b1cdbd2cSJim Jagielski+	void CopyFrom(data16 * pchwStart, int /*cchw*/)
409*b1cdbd2cSJim Jagielski+#else
410*b1cdbd2cSJim Jagielski 	void CopyFrom(data16 * pchwStart, int cchw)
411*b1cdbd2cSJim Jagielski+#endif
412*b1cdbd2cSJim Jagielski 	{
413*b1cdbd2cSJim Jagielski 		m_cgixBIG = pchwStart[0];
414*b1cdbd2cSJim Jagielski 		m_digixBIGInit = pchwStart[1];
415*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrEngine.cpp	Wed Jan 28 04:01:29 2009
416*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrEngine.cpp	Sat Aug 22 19:36:33 2009
417*b1cdbd2cSJim Jagielski@@ -159,12 +159,12 @@
418*b1cdbd2cSJim Jagielski GrEngine::~GrEngine()
419*b1cdbd2cSJim Jagielski {
420*b1cdbd2cSJim Jagielski 	DestroyEverything();
421*b1cdbd2cSJim Jagielski-	#ifdef _MSC_VER
422*b1cdbd2cSJim Jagielski-	if (!_CrtCheckMemory())
423*b1cdbd2cSJim Jagielski-	{
424*b1cdbd2cSJim Jagielski-		OutputDebugString(L"bad memory");
425*b1cdbd2cSJim Jagielski-	}
426*b1cdbd2cSJim Jagielski-	#endif
427*b1cdbd2cSJim Jagielski+//	#ifdef _MSC_VER
428*b1cdbd2cSJim Jagielski+//	if (!_CrtCheckMemory())
429*b1cdbd2cSJim Jagielski+//	{
430*b1cdbd2cSJim Jagielski+//		OutputDebugString(L"bad memory");
431*b1cdbd2cSJim Jagielski+//	}
432*b1cdbd2cSJim Jagielski+//	#endif
433*b1cdbd2cSJim Jagielski }
434*b1cdbd2cSJim Jagielski
435*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
436*b1cdbd2cSJim Jagielski@@ -173,12 +173,12 @@
437*b1cdbd2cSJim Jagielski void GrEngine::DestroyEverything()
438*b1cdbd2cSJim Jagielski {
439*b1cdbd2cSJim Jagielski 	DestroyContents();
440*b1cdbd2cSJim Jagielski-	#ifdef _MSC_VER
441*b1cdbd2cSJim Jagielski-	if (!_CrtCheckMemory())
442*b1cdbd2cSJim Jagielski-	{
443*b1cdbd2cSJim Jagielski-		OutputDebugString(L"bad memory");
444*b1cdbd2cSJim Jagielski-	}
445*b1cdbd2cSJim Jagielski-	#endif
446*b1cdbd2cSJim Jagielski+//	#ifdef _MSC_VER
447*b1cdbd2cSJim Jagielski+//	if (!_CrtCheckMemory())
448*b1cdbd2cSJim Jagielski+//	{
449*b1cdbd2cSJim Jagielski+//		OutputDebugString(L"bad memory");
450*b1cdbd2cSJim Jagielski+//	}
451*b1cdbd2cSJim Jagielski+//	#endif
452*b1cdbd2cSJim Jagielski
453*b1cdbd2cSJim Jagielski 	m_strCtrlFileReg.erase();
454*b1cdbd2cSJim Jagielski 	m_strCtrlFileBold.erase();
455*b1cdbd2cSJim Jagielski@@ -417,7 +417,11 @@
456*b1cdbd2cSJim Jagielski 	@return The supported script direction(s). If more than one, the application is
457*b1cdbd2cSJim Jagielski 	responsible for choosing the most appropriate.
458*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
459*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
460*b1cdbd2cSJim Jagielski+GrResult GrEngine::get_ScriptDirection(unsigned int * pgrfsdc, OLECHAR * /*prgchwErrMsg*/, int /*cchMaxErrMsg*/)
461*b1cdbd2cSJim Jagielski+#else
462*b1cdbd2cSJim Jagielski GrResult GrEngine::get_ScriptDirection(unsigned int * pgrfsdc, OLECHAR * prgchwErrMsg, int cchMaxErrMsg)
463*b1cdbd2cSJim Jagielski+#endif
464*b1cdbd2cSJim Jagielski {
465*b1cdbd2cSJim Jagielski 	ChkGrOutPtr(pgrfsdc);
466*b1cdbd2cSJim Jagielski 	ChkGrArrayArg(prgchwErrMsg, cchMaxErrMsg);
467*b1cdbd2cSJim Jagielski@@ -789,7 +793,7 @@
468*b1cdbd2cSJim Jagielski 	Record a system error indicating a bad error in rendering using a supposedly valid font.
469*b1cdbd2cSJim Jagielski 	OBSOLETE
470*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
471*b1cdbd2cSJim Jagielski-void GrEngine::RecordFontRunError(OLECHAR * prgchwErrMsg, int cchMax, GrResult res)
472*b1cdbd2cSJim Jagielski+void GrEngine::RecordFontRunError(OLECHAR * prgchwErrMsg, int cchMax, GrResult /*res*/)
473*b1cdbd2cSJim Jagielski {
474*b1cdbd2cSJim Jagielski 	if (prgchwErrMsg == NULL || cchMax == 0)
475*b1cdbd2cSJim Jagielski 		return;
476*b1cdbd2cSJim Jagielski@@ -970,7 +974,7 @@
477*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
478*b1cdbd2cSJim Jagielski 	Return whether the text is asking for bold and/or italic text.
479*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
480*b1cdbd2cSJim Jagielski-void GrEngine::GetStyles(Font * pfont, int ichwMin, bool * pfBold, bool * pfItalic)
481*b1cdbd2cSJim Jagielski+void GrEngine::GetStyles(Font * pfont, int /*ichwMin*/, bool * pfBold, bool * pfItalic)
482*b1cdbd2cSJim Jagielski {
483*b1cdbd2cSJim Jagielski 	*pfBold = pfont->bold();
484*b1cdbd2cSJim Jagielski 	*pfItalic = pfont->italic();
485*b1cdbd2cSJim Jagielski@@ -981,7 +985,11 @@
486*b1cdbd2cSJim Jagielski 	Should only be called when we know we are using a base font, or when we are reading
487*b1cdbd2cSJim Jagielski 	the base font to see if it is valid.
488*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
489*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
490*b1cdbd2cSJim Jagielski+void GrEngine::SwitchGraphicsFont(bool /*fBase*/)
491*b1cdbd2cSJim Jagielski+#else
492*b1cdbd2cSJim Jagielski void GrEngine::SwitchGraphicsFont(bool fBase)
493*b1cdbd2cSJim Jagielski+#endif
494*b1cdbd2cSJim Jagielski {
495*b1cdbd2cSJim Jagielski 	Assert(!fBase || m_stuBaseFaceName.size() > 0);
496*b1cdbd2cSJim Jagielski
497*b1cdbd2cSJim Jagielski@@ -1135,7 +1143,7 @@
498*b1cdbd2cSJim Jagielski 		m_chwJShrink0 = 0xffff;
499*b1cdbd2cSJim Jagielski 		m_chwJStep0 = 0xffff;
500*b1cdbd2cSJim Jagielski 		m_chwJWeight0 = 0xffff;
501*b1cdbd2cSJim Jagielski-		for (int i = 0; i < m_cJLevels; i++)
502*b1cdbd2cSJim Jagielski+		for (i = 0; i < m_cJLevels; i++)
503*b1cdbd2cSJim Jagielski 		{
504*b1cdbd2cSJim Jagielski 			//	justification glyph attribute IDs
505*b1cdbd2cSJim Jagielski 			bTmp = grstrm.ReadByteFromFont();
506*b1cdbd2cSJim Jagielski@@ -1210,10 +1218,12 @@
507*b1cdbd2cSJim Jagielski
508*b1cdbd2cSJim Jagielski 	//	rendering behaviors--ignore for now
509*b1cdbd2cSJim Jagielski 	byte cBehaviors = grstrm.ReadByteFromFont();
510*b1cdbd2cSJim Jagielski-	unsigned int nBehaviors[kMaxRenderingBehavior];
511*b1cdbd2cSJim Jagielski+	int nTmp;
512*b1cdbd2cSJim Jagielski+	//unsigned int nBehaviors[kMaxRenderingBehavior]; -- this big buffer causes a stack overflow in Multiscribe; rework eventually
513*b1cdbd2cSJim Jagielski 	for (i = 0; i < cBehaviors; i++)
514*b1cdbd2cSJim Jagielski 	{
515*b1cdbd2cSJim Jagielski-		nBehaviors[i] = unsigned(grstrm.ReadIntFromFont());
516*b1cdbd2cSJim Jagielski+		//nBehaviors[i] = unsigned(grstrm.ReadIntFromFont());
517*b1cdbd2cSJim Jagielski+		nTmp = unsigned(grstrm.ReadIntFromFont());
518*b1cdbd2cSJim Jagielski 	}
519*b1cdbd2cSJim Jagielski
520*b1cdbd2cSJim Jagielski 	//	linebreak glyph ID
521*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrFSM.cpp	Thu Jan 22 00:36:42 2009
522*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrFSM.cpp	Sat Aug 22 19:36:33 2009
523*b1cdbd2cSJim Jagielski@@ -46,7 +46,7 @@
524*b1cdbd2cSJim Jagielski 	Fill in the FSM by reading from the font stream.
525*b1cdbd2cSJim Jagielski 	Assumes the stream is in the correct position.
526*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
527*b1cdbd2cSJim Jagielski-bool GrFSM::ReadFromFont(GrIStream & grstrm, int fxdVersion)
528*b1cdbd2cSJim Jagielski+bool GrFSM::ReadFromFont(GrIStream & grstrm, int /*fxdVersion*/)
529*b1cdbd2cSJim Jagielski {
530*b1cdbd2cSJim Jagielski 	short snTmp;
531*b1cdbd2cSJim Jagielski
532*b1cdbd2cSJim Jagielski@@ -138,7 +138,7 @@
533*b1cdbd2cSJim Jagielski 	Fill in the FSM's state table by reading from the font stream.
534*b1cdbd2cSJim Jagielski 	Assumes the stream is in the correct position.
535*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
536*b1cdbd2cSJim Jagielski-bool GrFSM::ReadStateTableFromFont(GrIStream & grstrm, int fxdVersion)
537*b1cdbd2cSJim Jagielski+bool GrFSM::ReadStateTableFromFont(GrIStream & grstrm, int /*fxdVersion*/)
538*b1cdbd2cSJim Jagielski {
539*b1cdbd2cSJim Jagielski 	int cCells = ((m_crow - m_crowFinal) * m_ccol);
540*b1cdbd2cSJim Jagielski 	m_prgrowTransitions = new short[cCells];
541*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrFeature.cpp	Thu Jan 22 00:36:42 2009
542*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrFeature.cpp	Sat Aug 22 19:36:33 2009
543*b1cdbd2cSJim Jagielski@@ -186,7 +186,7 @@
544*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
545*b1cdbd2cSJim Jagielski 	Read the languages from the font.
546*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
547*b1cdbd2cSJim Jagielski-bool GrLangTable::ReadFromFont(GrIStream * pgrstrm, int fxdVersion)
548*b1cdbd2cSJim Jagielski+bool GrLangTable::ReadFromFont(GrIStream * pgrstrm, int /*fxdVersion*/)
549*b1cdbd2cSJim Jagielski {
550*b1cdbd2cSJim Jagielski 	GrIStream & grstrm = *pgrstrm;
551*b1cdbd2cSJim Jagielski
552*b1cdbd2cSJim Jagielski@@ -206,13 +206,22 @@
553*b1cdbd2cSJim Jagielski
554*b1cdbd2cSJim Jagielski 	m_cbOffset0 = (lsbf)(m_prglang[0].cbOffsetBIG);
555*b1cdbd2cSJim Jagielski
556*b1cdbd2cSJim Jagielski-	Assert((lsbf)(m_prglang[m_clang].cFeaturesBIG) == 0); // bogus entry has no settings
557*b1cdbd2cSJim Jagielski+	if ((lsbf)(m_prglang[m_clang].cFeaturesBIG) == 0) // bogus entry has no settings
558*b1cdbd2cSJim Jagielski+	{
559*b1cdbd2cSJim Jagielski 	cb = (lsbf)(m_prglang[m_clang].cbOffsetBIG) - m_cbOffset0;
560*b1cdbd2cSJim Jagielski-	Assert(cb % sizeof(FeatSet) == 0); // # of bytes fits nicely into FeatSet class
561*b1cdbd2cSJim Jagielski+		if (cb % sizeof(FeatSet) == 0) // # of bytes fits nicely into FeatSet class
562*b1cdbd2cSJim Jagielski+		{
563*b1cdbd2cSJim Jagielski 	int cfset = cb / sizeof(FeatSet);
564*b1cdbd2cSJim Jagielski 	m_prgfset = new FeatSet[cfset];
565*b1cdbd2cSJim Jagielski 	m_cfset = cfset;
566*b1cdbd2cSJim Jagielski 	grstrm.ReadBlockFromFont(m_prgfset, cb);
567*b1cdbd2cSJim Jagielski+		}
568*b1cdbd2cSJim Jagielski+		else return false;
569*b1cdbd2cSJim Jagielski+	}
570*b1cdbd2cSJim Jagielski+	else
571*b1cdbd2cSJim Jagielski+	{
572*b1cdbd2cSJim Jagielski+		return false;
573*b1cdbd2cSJim Jagielski+	}
574*b1cdbd2cSJim Jagielski
575*b1cdbd2cSJim Jagielski 	return true;
576*b1cdbd2cSJim Jagielski }
577*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrPass.cpp	Wed Jan 28 04:01:29 2009
578*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrPass.cpp	Sat Aug 22 19:36:34 2009
579*b1cdbd2cSJim Jagielski@@ -279,9 +279,10 @@
580*b1cdbd2cSJim Jagielski 	@param twsh					- how we are handling trailing white-space
581*b1cdbd2cSJim Jagielski 	@param pnRet				- return value
582*b1cdbd2cSJim Jagielski 	@param pcslotGot			- return the number of slots gotten
583*b1cdbd2cSJim Jagielski-	@param pislotFinalBreak		- return the index of the final slot, when we are removing
584*b1cdbd2cSJim Jagielski-									the trailing white-space and so the end of the segment
585*b1cdbd2cSJim Jagielski-									will be before the any actual line-break slot
586*b1cdbd2cSJim Jagielski+	@param pislotFinalBreak		- index of the final slot (LB or actual glyph), or -1;
587*b1cdbd2cSJim Jagielski+									adjusted when we are removing the trailing white-space and
588*b1cdbd2cSJim Jagielski+									so the end of the segment will be before the any actual
589*b1cdbd2cSJim Jagielski+									line-break slot
590*b1cdbd2cSJim Jagielski
591*b1cdbd2cSJim Jagielski 	@return kNextPass if we were able to generated the number requested, or processing is
592*b1cdbd2cSJim Jagielski 		complete; otherwise return the number of slots needed from the previous pass.
593*b1cdbd2cSJim Jagielski@@ -465,7 +466,7 @@
594*b1cdbd2cSJim Jagielski void GrBidiPass::ExtendOutput(GrTableManager * ptman,
595*b1cdbd2cSJim Jagielski 	GrSlotStream* psstrmIn, GrSlotStream* psstrmOut,
596*b1cdbd2cSJim Jagielski 	int cslotNeededByNext, TrWsHandling twsh,
597*b1cdbd2cSJim Jagielski-	int * pnRet, int * pcslotGot, int * pislotFinalBreak)
598*b1cdbd2cSJim Jagielski+	int * pnRet, int * pcslotGot, int * /*pislotFinalBreak*/)
599*b1cdbd2cSJim Jagielski {
600*b1cdbd2cSJim Jagielski 	Assert(psstrmIn->SlotsToReprocess() == 0);
601*b1cdbd2cSJim Jagielski
602*b1cdbd2cSJim Jagielski@@ -776,7 +777,7 @@
603*b1cdbd2cSJim Jagielski int GrPass::ExtendFinalOutput(GrTableManager * ptman,
604*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmInput, GrSlotStream * psstrmOutput,
605*b1cdbd2cSJim Jagielski 	float xsSpaceAllotted, bool fWidthIsCharCount, bool fInfiniteWidth,
606*b1cdbd2cSJim Jagielski-	bool fHaveLineBreak, bool fMustBacktrack, LineBrk lbMax, TrWsHandling twsh,
607*b1cdbd2cSJim Jagielski+	bool fHaveLineBreak, bool fMustBacktrack, LineBrk /*lbMax*/, TrWsHandling twsh,
608*b1cdbd2cSJim Jagielski 	int * pislotLB, float * pxsWidth)
609*b1cdbd2cSJim Jagielski {
610*b1cdbd2cSJim Jagielski 	EngineState * pengst = ptman->State();
611*b1cdbd2cSJim Jagielski@@ -897,7 +898,11 @@
612*b1cdbd2cSJim Jagielski 	Remove undesirable trailing white-space.
613*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
614*b1cdbd2cSJim Jagielski int GrPass::RemoveTrailingWhiteSpace(GrTableManager * ptman, GrSlotStream * psstrmOut,
615*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
616*b1cdbd2cSJim Jagielski+	TrWsHandling /*twsh*/, int * pislotFinalBreak)
617*b1cdbd2cSJim Jagielski+#else
618*b1cdbd2cSJim Jagielski 	TrWsHandling twsh, int * pislotFinalBreak)
619*b1cdbd2cSJim Jagielski+#endif
620*b1cdbd2cSJim Jagielski {
621*b1cdbd2cSJim Jagielski 	EngineState * pengst = ptman->State();
622*b1cdbd2cSJim Jagielski
623*b1cdbd2cSJim Jagielski@@ -944,7 +949,7 @@
624*b1cdbd2cSJim Jagielski 	should never be necessary if they've set up their tables right.
625*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
626*b1cdbd2cSJim Jagielski void GrPass::CheckInputProgress(GrSlotStream * psstrmInput, GrSlotStream * psstrmOutput,
627*b1cdbd2cSJim Jagielski-	int islotOrigInput)
628*b1cdbd2cSJim Jagielski+	int /*islotOrigInput*/)
629*b1cdbd2cSJim Jagielski {
630*b1cdbd2cSJim Jagielski 	int islotInput = psstrmInput->ReadPosForNextGet();
631*b1cdbd2cSJim Jagielski //	Assert(islotInput >= islotOrigInput); -- no longer true now that we can back up
632*b1cdbd2cSJim Jagielski@@ -1752,7 +1757,7 @@
633*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
634*b1cdbd2cSJim Jagielski int GrPass::Unwind(GrTableManager * ptman,
635*b1cdbd2cSJim Jagielski 	int islotChanged, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut,
636*b1cdbd2cSJim Jagielski-	bool fFirst)
637*b1cdbd2cSJim Jagielski+	bool /*fFirst*/)
638*b1cdbd2cSJim Jagielski {
639*b1cdbd2cSJim Jagielski 	//	Back up the number of slots required for the longest rule context,
640*b1cdbd2cSJim Jagielski 	//	but if we land in the middle of a chunk, go forward to its boundary.
641*b1cdbd2cSJim Jagielski@@ -1824,7 +1829,7 @@
642*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
643*b1cdbd2cSJim Jagielski int GrBidiPass::Unwind(GrTableManager * ptman,
644*b1cdbd2cSJim Jagielski 	int islotChanged, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut,
645*b1cdbd2cSJim Jagielski-	bool fFirst)
646*b1cdbd2cSJim Jagielski+	bool /*fFirst*/)
647*b1cdbd2cSJim Jagielski {
648*b1cdbd2cSJim Jagielski 	int islotIn;
649*b1cdbd2cSJim Jagielski 	int islotOut;
650*b1cdbd2cSJim Jagielski@@ -1901,8 +1906,8 @@
651*b1cdbd2cSJim Jagielski 	OBSOLETE
652*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
653*b1cdbd2cSJim Jagielski //:Ignore
654*b1cdbd2cSJim Jagielski-void GrPosPass::Unattach(GrSlotStream * psstrmIn, int islotIn,
655*b1cdbd2cSJim Jagielski-	GrSlotStream * psstrmOut, int islotOut, int islotLB)
656*b1cdbd2cSJim Jagielski+void GrPosPass::Unattach(GrSlotStream * /*psstrmIn*/, int /*islotIn*/,
657*b1cdbd2cSJim Jagielski+	GrSlotStream * /*psstrmOut*/, int /*islotOut*/, int /*islotLB*/)
658*b1cdbd2cSJim Jagielski {
659*b1cdbd2cSJim Jagielski 	//	Because this is a positioning pass, there is a one-to-one correspondence between
660*b1cdbd2cSJim Jagielski 	//	the slots in the input and the slots in the output. Thus we can make simplifying
661*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrPass.h	Thu Aug 21 16:24:32 2008
662*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrPass.h	Sat Aug 22 19:36:34 2009
663*b1cdbd2cSJim Jagielski@@ -197,7 +197,7 @@
664*b1cdbd2cSJim Jagielski 	bool ReadFromFont(GrIStream & grstrm, int fxdSilfVersion, int fxdRuleVersion, int nOffset);
665*b1cdbd2cSJim Jagielski 	void InitializeWithNoRules();
666*b1cdbd2cSJim Jagielski
667*b1cdbd2cSJim Jagielski-	virtual void SetTopDirLevel(int n)
668*b1cdbd2cSJim Jagielski+	virtual void SetTopDirLevel(int /*n*/)
669*b1cdbd2cSJim Jagielski 	{	// only GrBidiPass does anything interesting
670*b1cdbd2cSJim Jagielski 	}
671*b1cdbd2cSJim Jagielski
672*b1cdbd2cSJim Jagielski@@ -253,13 +253,13 @@
673*b1cdbd2cSJim Jagielski 		m_pzpst->SetResyncSkip(n);
674*b1cdbd2cSJim Jagielski 	}
675*b1cdbd2cSJim Jagielski
676*b1cdbd2cSJim Jagielski-	virtual void DoCleanUpSegMin(GrTableManager * ptman,
677*b1cdbd2cSJim Jagielski-		GrSlotStream * psstrmIn, int islotInitReadPos, GrSlotStream * psstrmOut)
678*b1cdbd2cSJim Jagielski+	virtual void DoCleanUpSegMin(GrTableManager * /*ptman*/,
679*b1cdbd2cSJim Jagielski+		GrSlotStream * /*psstrmIn*/, int /*islotInitReadPos*/, GrSlotStream * /*psstrmOut*/)
680*b1cdbd2cSJim Jagielski 	{
681*b1cdbd2cSJim Jagielski 	}
682*b1cdbd2cSJim Jagielski
683*b1cdbd2cSJim Jagielski-	virtual void DoCleanUpSegLim(GrTableManager * ptman, GrSlotStream * psstrmOut,
684*b1cdbd2cSJim Jagielski-		TrWsHandling twsh)
685*b1cdbd2cSJim Jagielski+	virtual void DoCleanUpSegLim(GrTableManager * /*ptman*/, GrSlotStream * /*psstrmOut*/,
686*b1cdbd2cSJim Jagielski+		TrWsHandling /*twsh*/)
687*b1cdbd2cSJim Jagielski 	{
688*b1cdbd2cSJim Jagielski 	}
689*b1cdbd2cSJim Jagielski
690*b1cdbd2cSJim Jagielski@@ -383,8 +383,8 @@
691*b1cdbd2cSJim Jagielski 	void MapChunks(GrSlotStream * psstrmIn, GrSlotStream * psstrmOut,
692*b1cdbd2cSJim Jagielski 		int islotChunkI, int islotChunkO, int cslotReprocessed);
693*b1cdbd2cSJim Jagielski
694*b1cdbd2cSJim Jagielski-	virtual void Unattach(GrSlotStream * psstrmIn, int islotIn,	// GrPosPass overrides
695*b1cdbd2cSJim Jagielski-		GrSlotStream * psstrmOut, int islotOut, int islotLB)
696*b1cdbd2cSJim Jagielski+	virtual void Unattach(GrSlotStream * /*psstrmIn*/, int /*islotIn*/,	// GrPosPass overrides
697*b1cdbd2cSJim Jagielski+		GrSlotStream * /*psstrmOut*/, int /*islotOut*/, int /*islotLB*/)
698*b1cdbd2cSJim Jagielski 	{
699*b1cdbd2cSJim Jagielski 	}
700*b1cdbd2cSJim Jagielski
701*b1cdbd2cSJim Jagielski@@ -500,8 +500,8 @@
702*b1cdbd2cSJim Jagielski
703*b1cdbd2cSJim Jagielski protected:
704*b1cdbd2cSJim Jagielski 	//	Irrelevant when generating glyphs.
705*b1cdbd2cSJim Jagielski-	virtual void RunRule(GrTableManager *, int ruln,
706*b1cdbd2cSJim Jagielski-		GrSlotStream * psstrmInput, GrSlotStream * psstrmOutput)
707*b1cdbd2cSJim Jagielski+	virtual void RunRule(GrTableManager *, int /*ruln*/,
708*b1cdbd2cSJim Jagielski+		GrSlotStream * /*psstrmInput*/, GrSlotStream * /*psstrmOutput*/)
709*b1cdbd2cSJim Jagielski 	{
710*b1cdbd2cSJim Jagielski 		Assert(false);
711*b1cdbd2cSJim Jagielski 	}
712*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrPassActionCode.cpp	Wed Jan 28 04:01:29 2009
713*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrPassActionCode.cpp	Sat Aug 22 19:36:34 2009
714*b1cdbd2cSJim Jagielski@@ -632,8 +632,13 @@
715*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
716*b1cdbd2cSJim Jagielski 	We are finished processing a slot; go on to the next slot, or possibly go backwards.
717*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
718*b1cdbd2cSJim Jagielski-void GrPass::DoNext(GrTableManager * ptman,
719*b1cdbd2cSJim Jagielski-	int cslot, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
720*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
721*b1cdbd2cSJim Jagielski+void GrPass::DoNext(GrTableManager * /*ptman*/,
722*b1cdbd2cSJim Jagielski+	int /*cslot*/, GrSlotStream * /*psstrmIn*/, GrSlotStream * /*psstrmOut*/)
723*b1cdbd2cSJim Jagielski+#else
724*b1cdbd2cSJim Jagielski+void GrPass::DoNext(GrTableManager * /*ptman*/,
725*b1cdbd2cSJim Jagielski+	int cslot, GrSlotStream * /*psstrmIn*/, GrSlotStream * /*psstrmOut*/)
726*b1cdbd2cSJim Jagielski+#endif
727*b1cdbd2cSJim Jagielski {
728*b1cdbd2cSJim Jagielski 	gAssert(cslot == 1);	// for now anyway
729*b1cdbd2cSJim Jagielski }
730*b1cdbd2cSJim Jagielski@@ -690,6 +695,7 @@
731*b1cdbd2cSJim Jagielski 		psstrmOut->SetSegMinToWritePos(false);
732*b1cdbd2cSJim Jagielski 	if (fSetSegLim)
733*b1cdbd2cSJim Jagielski 		psstrmOut->SetSegLimToWritePos(false);
734*b1cdbd2cSJim Jagielski+	//gid16 chw; chw = pslotNew->GlyphID();
735*b1cdbd2cSJim Jagielski 	psstrmOut->NextPut(pslotNew);
736*b1cdbd2cSJim Jagielski }
737*b1cdbd2cSJim Jagielski
738*b1cdbd2cSJim Jagielski@@ -729,6 +735,7 @@
739*b1cdbd2cSJim Jagielski 		psstrmOut->SetSegMinToWritePos(false);
740*b1cdbd2cSJim Jagielski 	if (fSetSegLim)
741*b1cdbd2cSJim Jagielski 		psstrmOut->SetSegLimToWritePos(false);
742*b1cdbd2cSJim Jagielski+	//gid16 chw; chw = pslotNew->GlyphID();
743*b1cdbd2cSJim Jagielski 	psstrmOut->NextPut(pslotNew);
744*b1cdbd2cSJim Jagielski }
745*b1cdbd2cSJim Jagielski
746*b1cdbd2cSJim Jagielski@@ -825,7 +832,7 @@
747*b1cdbd2cSJim Jagielski 	@param psstrmIn / Out		- input/output streams
748*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
749*b1cdbd2cSJim Jagielski void GrPass::DoPutSubs3(GrTableManager * ptman, bool fInserting,
750*b1cdbd2cSJim Jagielski-	int cslotSel1, int nSelClass1, int cslotSel2, int nSelClass2, int cslotSel3, int nSelClass3,
751*b1cdbd2cSJim Jagielski+	int cslotSel1, int nSelClass1, int cslotSel2, int nSelClass2, int /*cslotSel3*/, int nSelClass3,
752*b1cdbd2cSJim Jagielski 	int nReplacementClass,
753*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
754*b1cdbd2cSJim Jagielski {
755*b1cdbd2cSJim Jagielski@@ -888,7 +895,7 @@
756*b1cdbd2cSJim Jagielski 	Common part of all the DoPutSubs... methods.
757*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
758*b1cdbd2cSJim Jagielski void GrPass::DoPutSubsAux(GrTableManager * ptman, bool fInserting, gid16 nGlyphReplacement,
759*b1cdbd2cSJim Jagielski-	GrSlotStream * psstrmIn, GrSlotStream * psstrmOut, GrSlotState * pslotNextInput,
760*b1cdbd2cSJim Jagielski+	GrSlotStream * /*psstrmIn*/, GrSlotStream * psstrmOut, GrSlotState * pslotNextInput,
761*b1cdbd2cSJim Jagielski 	bool fAtSegMin, bool fAtSegLim)
762*b1cdbd2cSJim Jagielski {
763*b1cdbd2cSJim Jagielski 	EngineState * pengst = ptman->State();
764*b1cdbd2cSJim Jagielski@@ -915,6 +922,7 @@
765*b1cdbd2cSJim Jagielski 		psstrmOut->SetSegMinToWritePos(false);
766*b1cdbd2cSJim Jagielski 	if (fSetSegLim)
767*b1cdbd2cSJim Jagielski 		psstrmOut->SetSegLimToWritePos(false);
768*b1cdbd2cSJim Jagielski+	//gid16 chw; chw = pslotNew->GlyphID();
769*b1cdbd2cSJim Jagielski 	psstrmOut->NextPut(pslotNew);
770*b1cdbd2cSJim Jagielski }
771*b1cdbd2cSJim Jagielski
772*b1cdbd2cSJim Jagielski@@ -924,7 +932,7 @@
773*b1cdbd2cSJim Jagielski 	and its after-assoc to the slot before it. This makes it basically unselectable.
774*b1cdbd2cSJim Jagielski 	OBSOLETE - handled by slot initialization code
775*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
776*b1cdbd2cSJim Jagielski-void GrPass::SetNeutralAssocs(GrSlotState * pslotNew, GrSlotStream * psstrmIn)
777*b1cdbd2cSJim Jagielski+void GrPass::SetNeutralAssocs(GrSlotState * pslotNew, GrSlotStream * /*psstrmIn*/)
778*b1cdbd2cSJim Jagielski {
779*b1cdbd2cSJim Jagielski 	pslotNew->ClearAssocs();
780*b1cdbd2cSJim Jagielski }
781*b1cdbd2cSJim Jagielski@@ -943,6 +951,7 @@
782*b1cdbd2cSJim Jagielski 		psstrmOut->SetSegLimToWritePos();
783*b1cdbd2cSJim Jagielski
784*b1cdbd2cSJim Jagielski 	GrSlotState * pslot = psstrmIn->NextGet();
785*b1cdbd2cSJim Jagielski+	//gid16 chw; chw = pslotNew->GlyphID();
786*b1cdbd2cSJim Jagielski 	pslot->MarkDeleted();
787*b1cdbd2cSJim Jagielski
788*b1cdbd2cSJim Jagielski 	if (ptman->LoggingTransduction())
789*b1cdbd2cSJim Jagielski@@ -957,7 +966,7 @@
790*b1cdbd2cSJim Jagielski 	@param fInserting			- whether current slot was inserted
791*b1cdbd2cSJim Jagielski 	@param psstrmIn / Out		- input/output streams
792*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
793*b1cdbd2cSJim Jagielski-void GrPass::DoAssoc(int cnAssocs, std::vector<int> & vnAssocs, bool fInserting,
794*b1cdbd2cSJim Jagielski+void GrPass::DoAssoc(int cnAssocs, std::vector<int> & vnAssocs, bool /*fInserting*/,
795*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
796*b1cdbd2cSJim Jagielski {
797*b1cdbd2cSJim Jagielski 	gAssert((unsigned)cnAssocs == vnAssocs.size());
798*b1cdbd2cSJim Jagielski@@ -997,7 +1006,11 @@
799*b1cdbd2cSJim Jagielski 	@param vnStack				- stack to read value from
800*b1cdbd2cSJim Jagielski 	@param psstrmIn / Out		- input/output streams
801*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
802*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
803*b1cdbd2cSJim Jagielski+void GrPass::DoSetAttr(GrTableManager * ptman, ActionCommand op, bool /*fInserting*/,
804*b1cdbd2cSJim Jagielski+#else
805*b1cdbd2cSJim Jagielski void GrPass::DoSetAttr(GrTableManager * ptman, ActionCommand op, bool fInserting,
806*b1cdbd2cSJim Jagielski+#endif
807*b1cdbd2cSJim Jagielski 	SlotAttrName slat, int slati, std::vector<int> & vnStack,
808*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
809*b1cdbd2cSJim Jagielski {
810*b1cdbd2cSJim Jagielski@@ -1192,7 +1205,7 @@
811*b1cdbd2cSJim Jagielski 	@param psstrmIn				- input stream
812*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
813*b1cdbd2cSJim Jagielski void GrPass::DoPushSlotAttr(GrTableManager * ptman,
814*b1cdbd2cSJim Jagielski-	int nSlotRef, bool fInserting,
815*b1cdbd2cSJim Jagielski+	int nSlotRef, bool /*fInserting*/,
816*b1cdbd2cSJim Jagielski 	SlotAttrName slat, int slati, std::vector<int> & vnStack,
817*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
818*b1cdbd2cSJim Jagielski {
819*b1cdbd2cSJim Jagielski@@ -1236,16 +1249,16 @@
820*b1cdbd2cSJim Jagielski
821*b1cdbd2cSJim Jagielski 	case kslatAttTo:		nVal = pslot->AttachTo();			break;
822*b1cdbd2cSJim Jagielski 	case kslatAttLevel:		nVal = pslot->AttachLevel();		break;
823*b1cdbd2cSJim Jagielski-	case kslatAttAtX:		nVal = pslot->AttachAtX(ptman, psstrmIn); break;
824*b1cdbd2cSJim Jagielski 	case kslatAttAtY:		nVal = pslot->AttachAtY();			break;
825*b1cdbd2cSJim Jagielski 	case kslatAttAtGpt:		nVal = pslot->AttachAtGpoint();		break;
826*b1cdbd2cSJim Jagielski 	case kslatAttAtXoff:	nVal = pslot->AttachAtXOffset();	break;
827*b1cdbd2cSJim Jagielski 	case kslatAttAtYoff:	nVal = pslot->AttachAtYOffset();	break;
828*b1cdbd2cSJim Jagielski-	case kslatAttWithX:		nVal = pslot->AttachWithX(ptman, psstrmIn); break;
829*b1cdbd2cSJim Jagielski 	case kslatAttWithY:		nVal = pslot->AttachWithY();		break;
830*b1cdbd2cSJim Jagielski 	case kslatAttWithGpt:	nVal = pslot->AttachWithGpoint();	break;
831*b1cdbd2cSJim Jagielski 	case kslatAttWithXoff:	nVal = pslot->AttachWithXOffset();	break;
832*b1cdbd2cSJim Jagielski 	case kslatAttWithYoff:	nVal = pslot->AttachWithYOffset();	break;
833*b1cdbd2cSJim Jagielski+	case kslatAttAtX:		nVal = pslot->AttachAtX(ptman, psstrmIn);	break;
834*b1cdbd2cSJim Jagielski+	case kslatAttWithX:		nVal = pslot->AttachWithX(ptman, psstrmIn);	break;
835*b1cdbd2cSJim Jagielski
836*b1cdbd2cSJim Jagielski 	case kslatMeasureSol:	nVal = pslot->MeasureSol();			break;
837*b1cdbd2cSJim Jagielski 	case kslatMeasureEol:	nVal = pslot->MeasureEol();			break;
838*b1cdbd2cSJim Jagielski@@ -1282,7 +1295,7 @@
839*b1cdbd2cSJim Jagielski 	@param vnStack				- stack to push onto
840*b1cdbd2cSJim Jagielski 	@param psstrmIn				- input stream
841*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
842*b1cdbd2cSJim Jagielski-void GrPass::DoPushGlyphAttr(GrTableManager * ptman, int nSlotRef, bool fInserting,
843*b1cdbd2cSJim Jagielski+void GrPass::DoPushGlyphAttr(GrTableManager * ptman, int nSlotRef, bool /*fInserting*/,
844*b1cdbd2cSJim Jagielski 	int nGlyphAttr,
845*b1cdbd2cSJim Jagielski 	std::vector<int> & vnStack, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
846*b1cdbd2cSJim Jagielski {
847*b1cdbd2cSJim Jagielski@@ -1307,7 +1320,7 @@
848*b1cdbd2cSJim Jagielski 	@param vnStack				- stack to push onto
849*b1cdbd2cSJim Jagielski 	@param psstrmIn				- input stream
850*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
851*b1cdbd2cSJim Jagielski-void GrPass::DoPushAttToGlyphAttr(GrTableManager * ptman, int nSlotRef, bool fInserting,
852*b1cdbd2cSJim Jagielski+void GrPass::DoPushAttToGlyphAttr(GrTableManager * ptman, int nSlotRef, bool /*fInserting*/,
853*b1cdbd2cSJim Jagielski 	int nGlyphAttr, std::vector<int> & vnStack,
854*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
855*b1cdbd2cSJim Jagielski {
856*b1cdbd2cSJim Jagielski@@ -1337,7 +1350,7 @@
857*b1cdbd2cSJim Jagielski 	@param vnStack				- stack to push onto
858*b1cdbd2cSJim Jagielski 	@param psstrmIn				- input stream
859*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
860*b1cdbd2cSJim Jagielski-void GrPass::DoPushGlyphMetric(GrTableManager * ptman, int nSlotRef, bool fInserting,
861*b1cdbd2cSJim Jagielski+void GrPass::DoPushGlyphMetric(GrTableManager * ptman, int nSlotRef, bool /*fInserting*/,
862*b1cdbd2cSJim Jagielski 	int nGlyphAttr, int nAttLevel,
863*b1cdbd2cSJim Jagielski 	std::vector<int> & vnStack, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
864*b1cdbd2cSJim Jagielski {
865*b1cdbd2cSJim Jagielski@@ -1364,7 +1377,7 @@
866*b1cdbd2cSJim Jagielski 	@param psstrmIn				- input stream
867*b1cdbd2cSJim Jagielski 	@param psstrmOut			- output stream
868*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
869*b1cdbd2cSJim Jagielski-void GrPass::DoPushAttToGlyphMetric(GrTableManager * ptman, int nSlotRef, bool fInserting,
870*b1cdbd2cSJim Jagielski+void GrPass::DoPushAttToGlyphMetric(GrTableManager * ptman, int nSlotRef, bool /*fInserting*/,
871*b1cdbd2cSJim Jagielski 	int nGlyphAttr, int nAttLevel,
872*b1cdbd2cSJim Jagielski 	std::vector<int> & vnStack,
873*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
874*b1cdbd2cSJim Jagielski@@ -1399,7 +1412,7 @@
875*b1cdbd2cSJim Jagielski 	}
876*b1cdbd2cSJim Jagielski 	else
877*b1cdbd2cSJim Jagielski 	{
878*b1cdbd2cSJim Jagielski-		pslot->CalcCompositeMetrics(ptman, psstrmIn, nAttLevel, true);
879*b1cdbd2cSJim Jagielski+		pslot->CalcCompositeMetrics(ptman, psstrmIn, NULL, nAttLevel, true);
880*b1cdbd2cSJim Jagielski
881*b1cdbd2cSJim Jagielski 		float xy;
882*b1cdbd2cSJim Jagielski 		switch (gmet)
883*b1cdbd2cSJim Jagielski@@ -1435,7 +1448,11 @@
884*b1cdbd2cSJim Jagielski 	@param psstrmIn				- input stream
885*b1cdbd2cSJim Jagielski 	@param psstrmOut			- output stream
886*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
887*b1cdbd2cSJim Jagielski-void GrPass::DoPushFeatValue(GrTableManager * ptman, int nSlotRef, bool fInserting,
888*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
889*b1cdbd2cSJim Jagielski+void GrPass::DoPushFeatValue(GrTableManager * /*ptman*/, int nSlotRef, bool /*fInserting*/,
890*b1cdbd2cSJim Jagielski+#else
891*b1cdbd2cSJim Jagielski+void GrPass::DoPushFeatValue(GrTableManager * /*ptman*/, int nSlotRef, bool fInserting,
892*b1cdbd2cSJim Jagielski+#endif
893*b1cdbd2cSJim Jagielski 	int nFeat, std::vector<int> & vnStack, GrSlotStream * psstrmIn, GrSlotStream * psstrmOut)
894*b1cdbd2cSJim Jagielski {
895*b1cdbd2cSJim Jagielski 	gAssert(!fInserting);
896*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrSlotState.cpp	Wed Jan 28 04:01:29 2009
897*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotState.cpp	Sat Aug 22 19:36:34 2009
898*b1cdbd2cSJim Jagielski@@ -261,7 +261,7 @@
899*b1cdbd2cSJim Jagielski 	root or attached leaf slots.
900*b1cdbd2cSJim Jagielski 	OBSOLETE
901*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
902*b1cdbd2cSJim Jagielski-void GrSlotState::FixAttachmentTree(GrSlotState * pslotOld)
903*b1cdbd2cSJim Jagielski+void GrSlotState::FixAttachmentTree(GrSlotState * /*pslotOld*/)
904*b1cdbd2cSJim Jagielski {
905*b1cdbd2cSJim Jagielski #if 0
906*b1cdbd2cSJim Jagielski 	pslotOld->m_vpslotAttLeaves.CopyTo(m_vpslotAttLeaves);
907*b1cdbd2cSJim Jagielski@@ -524,13 +524,13 @@
908*b1cdbd2cSJim Jagielski 		GrSlotState * pslot;
909*b1cdbd2cSJim Jagielski 		if (HasComponents())
910*b1cdbd2cSJim Jagielski 		{
911*b1cdbd2cSJim Jagielski-			for (int iComponent = 0; iComponent < m_cnCompPerLig; iComponent++)
912*b1cdbd2cSJim Jagielski+			for (int iLigComponent = 0; iLigComponent < m_cnCompPerLig; iLigComponent++)
913*b1cdbd2cSJim Jagielski 			{
914*b1cdbd2cSJim Jagielski-				pslot = CompRefSlot(iComponent);
915*b1cdbd2cSJim Jagielski+				pslot = CompRefSlot(iLigComponent);
916*b1cdbd2cSJim Jagielski 				if (pslot)
917*b1cdbd2cSJim Jagielski 				{
918*b1cdbd2cSJim Jagielski 					Assert(PassModified() >= pslot->PassModified());
919*b1cdbd2cSJim Jagielski-					pslot->AllComponentRefs(vichw, vicomp, iComponent);
920*b1cdbd2cSJim Jagielski+					pslot->AllComponentRefs(vichw, vicomp, iLigComponent);
921*b1cdbd2cSJim Jagielski 				}
922*b1cdbd2cSJim Jagielski 			}
923*b1cdbd2cSJim Jagielski 		}
924*b1cdbd2cSJim Jagielski@@ -1024,7 +1024,7 @@
925*b1cdbd2cSJim Jagielski 	NOTE: the caller is responsible to zap the cached positions of following glyphs
926*b1cdbd2cSJim Jagielski 	in the stream.
927*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
928*b1cdbd2cSJim Jagielski-void GrSlotState::AttachToRoot(GrTableManager * ptman, GrSlotStream * psstrm,
929*b1cdbd2cSJim Jagielski+void GrSlotState::AttachToRoot(GrTableManager * /*ptman*/, GrSlotStream * psstrm,
930*b1cdbd2cSJim Jagielski 	GrSlotState * pslotNewRoot)
931*b1cdbd2cSJim Jagielski {
932*b1cdbd2cSJim Jagielski 	GrSlotState * pslotOldRoot = (m_dislotRootFixed == 0) ?
933*b1cdbd2cSJim Jagielski@@ -1063,7 +1063,7 @@
934*b1cdbd2cSJim Jagielski
935*b1cdbd2cSJim Jagielski 	float xsWidth, xsVisWidth;
936*b1cdbd2cSJim Jagielski 	if (m_xsPositionX == kNegInfFloat || m_ysPositionY == kNegInfFloat)
937*b1cdbd2cSJim Jagielski-		ptman->CalcPositionsUpTo(psstrmOut->m_ipass, this, &xsWidth, &xsVisWidth);
938*b1cdbd2cSJim Jagielski+		ptman->CalcPositionsUpTo(psstrmOut->m_ipass, this, true, &xsWidth, &xsVisWidth);
939*b1cdbd2cSJim Jagielski
940*b1cdbd2cSJim Jagielski 	*pmXPos = ptman->LogToEmUnits(m_xsPositionX);
941*b1cdbd2cSJim Jagielski 	*pmYPos = ptman->LogToEmUnits(m_ysPositionY);
942*b1cdbd2cSJim Jagielski@@ -1077,7 +1077,7 @@
943*b1cdbd2cSJim Jagielski {
944*b1cdbd2cSJim Jagielski 	Assert(m_dislotRootFixed == m_srAttachTo);
945*b1cdbd2cSJim Jagielski 	GrSlotState * pslotRoot = AttachRoot(psstrm);
946*b1cdbd2cSJim Jagielski-	CalcRootMetrics(ptman, psstrm, kPosInfinity);
947*b1cdbd2cSJim Jagielski+	CalcRootMetrics(ptman, psstrm, NULL, kPosInfinity);
948*b1cdbd2cSJim Jagielski 	if (pslotRoot)
949*b1cdbd2cSJim Jagielski 		pslotRoot->AdjustRootMetrics(ptman, psstrm);
950*b1cdbd2cSJim Jagielski }
951*b1cdbd2cSJim Jagielski@@ -1086,13 +1086,15 @@
952*b1cdbd2cSJim Jagielski 	Calculate the composite metrics for this slot.
953*b1cdbd2cSJim Jagielski
954*b1cdbd2cSJim Jagielski 	@param psstrm			- stream for which we are calculating it
955*b1cdbd2cSJim Jagielski+	@param psstrmNext		- because when processing in the middle of a pass, we may need to
956*b1cdbd2cSJim Jagielski+								get the slot from the following (output) stream
957*b1cdbd2cSJim Jagielski 	@param nLevel			- attachment level we are asking for; kPosInifinity means all levels
958*b1cdbd2cSJim Jagielski 	@param fThorough		- true: do a thorough recalculation; false: don't recalculate
959*b1cdbd2cSJim Jagielski 								metrics for leaves (are they assumed to be accurate???)
960*b1cdbd2cSJim Jagielski 								--currently not used
961*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
962*b1cdbd2cSJim Jagielski void GrSlotState::CalcCompositeMetrics(GrTableManager * ptman, GrSlotStream * psstrm,
963*b1cdbd2cSJim Jagielski-	int nLevel, bool fThorough)
964*b1cdbd2cSJim Jagielski+	GrSlotStream * psstrmNext, int nLevel, bool fThorough)
965*b1cdbd2cSJim Jagielski {
966*b1cdbd2cSJim Jagielski 	if (m_nCompositeLevel == nLevel)
967*b1cdbd2cSJim Jagielski 		return;
968*b1cdbd2cSJim Jagielski@@ -1101,19 +1103,38 @@
969*b1cdbd2cSJim Jagielski 	{
970*b1cdbd2cSJim Jagielski 		Assert(m_dislotRootFixed == m_srAttachTo);
971*b1cdbd2cSJim Jagielski 		GrSlotState * pslotRoot = AttachRoot(psstrm);
972*b1cdbd2cSJim Jagielski+		// Kludge to handle the fact that we might have gotten the root from the wrong stream.
973*b1cdbd2cSJim Jagielski+		// Calling MidPassSlotAt finds the right one.
974*b1cdbd2cSJim Jagielski+		if (psstrmNext && pslotRoot)
975*b1cdbd2cSJim Jagielski+		{
976*b1cdbd2cSJim Jagielski+			int islotRoot = pslotRoot->PosPassIndex();
977*b1cdbd2cSJim Jagielski+			pslotRoot = psstrm->MidPassSlotAt(islotRoot, psstrmNext);
978*b1cdbd2cSJim Jagielski+		}
979*b1cdbd2cSJim Jagielski
980*b1cdbd2cSJim Jagielski 		InitMetrics(ptman, pslotRoot);
981*b1cdbd2cSJim Jagielski
982*b1cdbd2cSJim Jagielski 		for (size_t islot = 0; islot < m_vdislotAttLeaves.size(); islot++)
983*b1cdbd2cSJim Jagielski 		{
984*b1cdbd2cSJim Jagielski-			GrSlotState * pslotLeaf = SlotAtOffset(psstrm, m_vdislotAttLeaves[islot]);
985*b1cdbd2cSJim Jagielski+			GrSlotState * pslotLeaf;
986*b1cdbd2cSJim Jagielski+			if (psstrmNext)
987*b1cdbd2cSJim Jagielski+			{
988*b1cdbd2cSJim Jagielski+				// Calculating a position in the middle of processing a pass.
989*b1cdbd2cSJim Jagielski+				pslotLeaf = psstrm->MidPassSlotAt(PosPassIndex() + m_vdislotAttLeaves[islot],
990*b1cdbd2cSJim Jagielski+					psstrmNext);
991*b1cdbd2cSJim Jagielski+			}
992*b1cdbd2cSJim Jagielski+			else
993*b1cdbd2cSJim Jagielski+			{
994*b1cdbd2cSJim Jagielski+				// Calculating the final position.
995*b1cdbd2cSJim Jagielski+				pslotLeaf = SlotAtOffset(psstrm, m_vdislotAttLeaves[islot]);
996*b1cdbd2cSJim Jagielski+			}
997*b1cdbd2cSJim Jagielski+
998*b1cdbd2cSJim Jagielski 			if (pslotLeaf->AttachLevel() <= nLevel)
999*b1cdbd2cSJim Jagielski-				pslotLeaf->CalcCompositeMetrics(ptman, psstrm, nLevel, fThorough);
1000*b1cdbd2cSJim Jagielski+				pslotLeaf->CalcCompositeMetrics(ptman, psstrm, psstrmNext, nLevel, fThorough);
1001*b1cdbd2cSJim Jagielski 			else
1002*b1cdbd2cSJim Jagielski 				//	this slot will be ignored in the composite metrics
1003*b1cdbd2cSJim Jagielski 				pslotLeaf->ZapRootMetrics();
1004*b1cdbd2cSJim Jagielski 		}
1005*b1cdbd2cSJim Jagielski-		CalcRootMetrics(ptman, psstrm, nLevel);
1006*b1cdbd2cSJim Jagielski+		CalcRootMetrics(ptman, psstrm, psstrmNext, nLevel);
1007*b1cdbd2cSJim Jagielski
1008*b1cdbd2cSJim Jagielski 		m_nCompositeLevel = nLevel;
1009*b1cdbd2cSJim Jagielski 	}
1010*b1cdbd2cSJim Jagielski@@ -1129,25 +1150,33 @@
1011*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
1012*b1cdbd2cSJim Jagielski 	Calculate the metrics for this node and all its leaf nodes.
1013*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1014*b1cdbd2cSJim Jagielski-void GrSlotState::CalcRootMetrics(GrTableManager * ptman, GrSlotStream * psstrm, int nLevel)
1015*b1cdbd2cSJim Jagielski+void GrSlotState::CalcRootMetrics(GrTableManager * /*ptman*/, GrSlotStream * psstrm,
1016*b1cdbd2cSJim Jagielski+	GrSlotStream * psstrmNext, int nLevel)
1017*b1cdbd2cSJim Jagielski {
1018*b1cdbd2cSJim Jagielski 	for (size_t idislot = 0; idislot < m_vdislotAttLeaves.size(); idislot++)
1019*b1cdbd2cSJim Jagielski 	{
1020*b1cdbd2cSJim Jagielski-		GrSlotState * pslot = SlotAtOffset(psstrm, m_vdislotAttLeaves[idislot]);
1021*b1cdbd2cSJim Jagielski-		if (pslot->AttachLevel() > nLevel)
1022*b1cdbd2cSJim Jagielski+		GrSlotState * pslotLeaf = SlotAtOffset(psstrm, m_vdislotAttLeaves[idislot]);
1023*b1cdbd2cSJim Jagielski+		// Kludge to handle the fact that we might have gotten the leaf from the wrong stream.
1024*b1cdbd2cSJim Jagielski+		// Calling MidPassSlotAt finds the right one.
1025*b1cdbd2cSJim Jagielski+		if (psstrmNext)
1026*b1cdbd2cSJim Jagielski+		{
1027*b1cdbd2cSJim Jagielski+			int islot = pslotLeaf->PosPassIndex();
1028*b1cdbd2cSJim Jagielski+			pslotLeaf = psstrm->MidPassSlotAt(islot, psstrmNext);
1029*b1cdbd2cSJim Jagielski+		}
1030*b1cdbd2cSJim Jagielski+		if (pslotLeaf->AttachLevel() > nLevel)
1031*b1cdbd2cSJim Jagielski 			continue;
1032*b1cdbd2cSJim Jagielski
1033*b1cdbd2cSJim Jagielski-		m_xsClusterXOffset = min(m_xsClusterXOffset, pslot->m_xsClusterXOffset);
1034*b1cdbd2cSJim Jagielski-		if (!pslot->m_fIgnoreAdvance)
1035*b1cdbd2cSJim Jagielski+		m_xsClusterXOffset = min(m_xsClusterXOffset, pslotLeaf->m_xsClusterXOffset);
1036*b1cdbd2cSJim Jagielski+		if (!pslotLeaf->m_fIgnoreAdvance)
1037*b1cdbd2cSJim Jagielski 		{
1038*b1cdbd2cSJim Jagielski 			m_xsClusterAdv = max(
1039*b1cdbd2cSJim Jagielski 				m_xsClusterAdv,
1040*b1cdbd2cSJim Jagielski-				pslot->m_xsClusterAdv + m_xsRootShiftX);
1041*b1cdbd2cSJim Jagielski+				pslotLeaf->m_xsClusterAdv + m_xsRootShiftX);
1042*b1cdbd2cSJim Jagielski 		}
1043*b1cdbd2cSJim Jagielski-		m_xsClusterBbLeft = min(m_xsClusterBbLeft, pslot->m_xsClusterBbLeft);
1044*b1cdbd2cSJim Jagielski-		m_xsClusterBbRight = max(m_xsClusterBbRight, pslot->m_xsClusterBbRight);
1045*b1cdbd2cSJim Jagielski-		m_ysClusterBbTop = max(m_ysClusterBbTop, pslot->m_ysClusterBbTop);
1046*b1cdbd2cSJim Jagielski-		m_ysClusterBbBottom = min(m_ysClusterBbBottom, pslot->m_ysClusterBbBottom);
1047*b1cdbd2cSJim Jagielski+		m_xsClusterBbLeft = min(m_xsClusterBbLeft, pslotLeaf->m_xsClusterBbLeft);
1048*b1cdbd2cSJim Jagielski+		m_xsClusterBbRight = max(m_xsClusterBbRight, pslotLeaf->m_xsClusterBbRight);
1049*b1cdbd2cSJim Jagielski+		m_ysClusterBbTop = max(m_ysClusterBbTop, pslotLeaf->m_ysClusterBbTop);
1050*b1cdbd2cSJim Jagielski+		m_ysClusterBbBottom = min(m_ysClusterBbBottom, pslotLeaf->m_ysClusterBbBottom);
1051*b1cdbd2cSJim Jagielski 	}
1052*b1cdbd2cSJim Jagielski }
1053*b1cdbd2cSJim Jagielski
1054*b1cdbd2cSJim Jagielski@@ -1263,7 +1292,7 @@
1055*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
1056*b1cdbd2cSJim Jagielski 	Y-offsets of a single glyph relative to the previous advance position.
1057*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1058*b1cdbd2cSJim Jagielski-float GrSlotState::GlyphYOffset(GrSlotStream * psstrm)
1059*b1cdbd2cSJim Jagielski+float GrSlotState::GlyphYOffset(GrSlotStream * /*psstrm*/)
1060*b1cdbd2cSJim Jagielski {
1061*b1cdbd2cSJim Jagielski 	return m_ysOffsetY;
1062*b1cdbd2cSJim Jagielski }
1063*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrSlotState.h	Wed Jan 28 04:01:29 2009
1064*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotState.h	Sat Aug 22 19:36:34 2009
1065*b1cdbd2cSJim Jagielski@@ -308,7 +308,11 @@
1066*b1cdbd2cSJim Jagielski 	{
1067*b1cdbd2cSJim Jagielski 		return m_islotPosPass;
1068*b1cdbd2cSJim Jagielski 	}
1069*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
1070*b1cdbd2cSJim Jagielski+	void SetPosPassIndex(int islot, bool /*fInputToPosPass1*/)
1071*b1cdbd2cSJim Jagielski+#else
1072*b1cdbd2cSJim Jagielski 	void SetPosPassIndex(int islot, bool fInputToPosPass1)
1073*b1cdbd2cSJim Jagielski+#endif
1074*b1cdbd2cSJim Jagielski 	{
1075*b1cdbd2cSJim Jagielski 		// If we're resetting it, it should be to the same value as before:
1076*b1cdbd2cSJim Jagielski 		Assert(fInputToPosPass1 || m_islotPosPass == kNotYetSet || m_islotPosPass == islot);
1077*b1cdbd2cSJim Jagielski@@ -386,12 +390,12 @@
1078*b1cdbd2cSJim Jagielski 		return (IsInitialLineBreak(chwLB) || IsFinalLineBreak(chwLB));
1079*b1cdbd2cSJim Jagielski 		//return (m_chwGlyphID == chwLB); // TODO: remove
1080*b1cdbd2cSJim Jagielski 	}
1081*b1cdbd2cSJim Jagielski-	bool IsInitialLineBreak(gid16 chwLB)
1082*b1cdbd2cSJim Jagielski+	bool IsInitialLineBreak(gid16 /*chwLB*/)
1083*b1cdbd2cSJim Jagielski 	{
1084*b1cdbd2cSJim Jagielski 		return (m_spsl == kspslLbInitial);
1085*b1cdbd2cSJim Jagielski 		//return (IsLineBreak(chwLB) && m_fInitialLB == true); // TODO: remove
1086*b1cdbd2cSJim Jagielski 	}
1087*b1cdbd2cSJim Jagielski-	bool IsFinalLineBreak(gid16 chwLB)
1088*b1cdbd2cSJim Jagielski+	bool IsFinalLineBreak(gid16 /*chwLB*/)
1089*b1cdbd2cSJim Jagielski 	{
1090*b1cdbd2cSJim Jagielski 		return (m_spsl == kspslLbFinal);
1091*b1cdbd2cSJim Jagielski 		//return (IsLineBreak(chwLB) && m_fInitialLB == false); // TODO: remove
1092*b1cdbd2cSJim Jagielski@@ -475,7 +479,7 @@
1093*b1cdbd2cSJim Jagielski 		return m_mAttachAtX;
1094*b1cdbd2cSJim Jagielski 	}
1095*b1cdbd2cSJim Jagielski
1096*b1cdbd2cSJim Jagielski-	int AttachWithX(GrTableManager * ptman, GrSlotStream * psstrm)
1097*b1cdbd2cSJim Jagielski+	int AttachWithX(GrTableManager * /*ptman*/, GrSlotStream * /*psstrm*/)
1098*b1cdbd2cSJim Jagielski 	{
1099*b1cdbd2cSJim Jagielski 		if (m_mAttachAtX == kNotYetSet)
1100*b1cdbd2cSJim Jagielski 		{
1101*b1cdbd2cSJim Jagielski@@ -615,7 +619,7 @@
1102*b1cdbd2cSJim Jagielski 		GrSlotStream * psstrmIn, GrSlotStream * psstrmOut, int islotThis);
1103*b1cdbd2cSJim Jagielski
1104*b1cdbd2cSJim Jagielski 	void CalcCompositeMetrics(GrTableManager * ptman, GrSlotStream * psstrm,
1105*b1cdbd2cSJim Jagielski-		int nLevel, bool fThorough = false);
1106*b1cdbd2cSJim Jagielski+		GrSlotStream * psstrmNext, int nLevel, bool fThorough = false);
1107*b1cdbd2cSJim Jagielski
1108*b1cdbd2cSJim Jagielski 	void Position(GrTableManager * ptman,
1109*b1cdbd2cSJim Jagielski 		GrSlotStream * psstrmOut, int * pmXPos, int * pmYPos);
1110*b1cdbd2cSJim Jagielski@@ -646,7 +650,7 @@
1111*b1cdbd2cSJim Jagielski 	{
1112*b1cdbd2cSJim Jagielski 		return ClusterBbLeft(psstrm) + xs;
1113*b1cdbd2cSJim Jagielski 	}
1114*b1cdbd2cSJim Jagielski-	float ClusterRsb(GrSlotStream * psstrm, float xs)
1115*b1cdbd2cSJim Jagielski+	float ClusterRsb(GrSlotStream * /*psstrm*/, float xs)
1116*b1cdbd2cSJim Jagielski 	{
1117*b1cdbd2cSJim Jagielski 		return ClusterAdvWidthFrom(xs) - ClusterBbRightFrom(xs);
1118*b1cdbd2cSJim Jagielski 	}
1119*b1cdbd2cSJim Jagielski@@ -668,19 +672,19 @@
1120*b1cdbd2cSJim Jagielski 	{
1121*b1cdbd2cSJim Jagielski 		return ClusterBbRightFrom(Base(psstrm)->ClusterRootOffset());
1122*b1cdbd2cSJim Jagielski 	}
1123*b1cdbd2cSJim Jagielski-	float ClusterBbTop(GrSlotStream * psstrm)
1124*b1cdbd2cSJim Jagielski+	float ClusterBbTop(GrSlotStream * /*psstrm*/)
1125*b1cdbd2cSJim Jagielski 	{
1126*b1cdbd2cSJim Jagielski 		return m_ysClusterBbTop;
1127*b1cdbd2cSJim Jagielski 	}
1128*b1cdbd2cSJim Jagielski-	float ClusterBbBottom(GrSlotStream * psstrm)
1129*b1cdbd2cSJim Jagielski+	float ClusterBbBottom(GrSlotStream * /*psstrm*/)
1130*b1cdbd2cSJim Jagielski 	{
1131*b1cdbd2cSJim Jagielski 		return m_ysClusterBbBottom;
1132*b1cdbd2cSJim Jagielski 	}
1133*b1cdbd2cSJim Jagielski-	float ClusterBbWidth(GrSlotStream * psstrm)
1134*b1cdbd2cSJim Jagielski+	float ClusterBbWidth(GrSlotStream * /*psstrm*/)
1135*b1cdbd2cSJim Jagielski 	{
1136*b1cdbd2cSJim Jagielski 		return m_xsClusterBbRight - m_xsClusterBbLeft + 1;
1137*b1cdbd2cSJim Jagielski 	}
1138*b1cdbd2cSJim Jagielski-	float ClusterBbHeight(GrSlotStream * psstrm)
1139*b1cdbd2cSJim Jagielski+	float ClusterBbHeight(GrSlotStream * /*psstrm*/)
1140*b1cdbd2cSJim Jagielski 	{
1141*b1cdbd2cSJim Jagielski 		return m_ysClusterBbTop - m_ysClusterBbBottom + 1;
1142*b1cdbd2cSJim Jagielski 	}
1143*b1cdbd2cSJim Jagielski@@ -990,7 +994,8 @@
1144*b1cdbd2cSJim Jagielski 	void InitMetrics(GrTableManager * ptman, GrSlotState * pslotRoot);
1145*b1cdbd2cSJim Jagielski 	void InitLeafMetrics(GrTableManager * ptman, GrSlotState * pslotRoot);
1146*b1cdbd2cSJim Jagielski 	void InitRootMetrics(GrTableManager * ptman);
1147*b1cdbd2cSJim Jagielski-	void CalcRootMetrics(GrTableManager * ptman, GrSlotStream *, int nLevel);
1148*b1cdbd2cSJim Jagielski+	void CalcRootMetrics(GrTableManager * ptman, GrSlotStream * psstrm,
1149*b1cdbd2cSJim Jagielski+		GrSlotStream * psstrmNext, int nLevel);
1150*b1cdbd2cSJim Jagielski 	void AttachToRoot(GrTableManager * ptman, GrSlotStream *, GrSlotState * pslotNewRoot);
1151*b1cdbd2cSJim Jagielski 	void AttachLogUnits(GrTableManager * ptman,
1152*b1cdbd2cSJim Jagielski 		GrSlotState * pslotRoot,
1153*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrSlotStream.cpp	Wed Feb 04 07:53:26 2009
1154*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotStream.cpp	Sat Aug 22 19:36:34 2009
1155*b1cdbd2cSJim Jagielski@@ -189,12 +189,16 @@
1156*b1cdbd2cSJim Jagielski 	stream position when the rule is being run.
1157*b1cdbd2cSJim Jagielski
1158*b1cdbd2cSJim Jagielski 	@param dislot		- how far back to peek before the write position
1159*b1cdbd2cSJim Jagielski-							when the rule started; a negative number
1160*b1cdbd2cSJim Jagielski+							WHEN THE RULE STARTED; a negative number
1161*b1cdbd2cSJim Jagielski 							(NOTE: the current write position is irrelevant)
1162*b1cdbd2cSJim Jagielski 	@param fNullOkay	- true if it's okay to return NULL in the situation where we're asking
1163*b1cdbd2cSJim Jagielski 							for something before the beginning of the stream
1164*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1165*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
1166*b1cdbd2cSJim Jagielski+GrSlotState * GrSlotStream::PeekBack(int dislot, bool /*fNullOkay*/)
1167*b1cdbd2cSJim Jagielski+#else
1168*b1cdbd2cSJim Jagielski GrSlotState * GrSlotStream::PeekBack(int dislot, bool fNullOkay)
1169*b1cdbd2cSJim Jagielski+#endif
1170*b1cdbd2cSJim Jagielski {
1171*b1cdbd2cSJim Jagielski 	Assert(dislot < 0);
1172*b1cdbd2cSJim Jagielski 	if (dislot < m_islotRuleStartWrite * -1)
1173*b1cdbd2cSJim Jagielski@@ -1104,6 +1108,7 @@
1174*b1cdbd2cSJim Jagielski 	case kdircRLO:
1175*b1cdbd2cSJim Jagielski 	case kdircRLE:
1176*b1cdbd2cSJim Jagielski 	case kdircPdfR:
1177*b1cdbd2cSJim Jagielski+	case kdircRlb:
1178*b1cdbd2cSJim Jagielski 		return true;
1179*b1cdbd2cSJim Jagielski
1180*b1cdbd2cSJim Jagielski 	case kdircNeutral:
1181*b1cdbd2cSJim Jagielski@@ -1212,7 +1217,7 @@
1182*b1cdbd2cSJim Jagielski 			return true;
1183*b1cdbd2cSJim Jagielski
1184*b1cdbd2cSJim Jagielski 		float xsWidth, xsVisWidth;
1185*b1cdbd2cSJim Jagielski-		ptman->CalcPositionsUpTo(m_ipass, NULL, &xsWidth, &xsVisWidth);
1186*b1cdbd2cSJim Jagielski+		ptman->CalcPositionsUpTo(m_ipass, NULL, false, &xsWidth, &xsVisWidth);
1187*b1cdbd2cSJim Jagielski
1188*b1cdbd2cSJim Jagielski 		*pxsWidth = (fIgnoreTrailingWS || twsh == ktwshOnlyWs) ? xsVisWidth : xsWidth;
1189*b1cdbd2cSJim Jagielski         return (*pxsWidth < xsSpaceAllotted);
1190*b1cdbd2cSJim Jagielski@@ -1322,7 +1327,7 @@
1191*b1cdbd2cSJim Jagielski 	@param islotMin			- first slot that is officially part of the segment (after initial LB)
1192*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1193*b1cdbd2cSJim Jagielski int GrSlotStream::MakeSegmentBreak(GrTableManager * ptman,
1194*b1cdbd2cSJim Jagielski-	int islotPrevBreak, bool fInsertedLB, int islotStartTry,
1195*b1cdbd2cSJim Jagielski+	int /*islotPrevBreak*/, bool /*fInsertedLB*/, int islotStartTry,
1196*b1cdbd2cSJim Jagielski 	LineBrk lb, TrWsHandling twsh, int islotMin,
1197*b1cdbd2cSJim Jagielski 	LineBrk * plbNextToTry)
1198*b1cdbd2cSJim Jagielski {
1199*b1cdbd2cSJim Jagielski@@ -1576,7 +1581,11 @@
1200*b1cdbd2cSJim Jagielski 	Return the break weight of the given slot, which should be a line-break.
1201*b1cdbd2cSJim Jagielski 	OBSOLETE??
1202*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1203*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
1204*b1cdbd2cSJim Jagielski+LineBrk GrSlotStream::BreakWeightAt(gid16 /*chwLB*/, int islot)
1205*b1cdbd2cSJim Jagielski+#else
1206*b1cdbd2cSJim Jagielski LineBrk GrSlotStream::BreakWeightAt(gid16 chwLB, int islot)
1207*b1cdbd2cSJim Jagielski+#endif
1208*b1cdbd2cSJim Jagielski {
1209*b1cdbd2cSJim Jagielski 	GrSlotState * pslot = GetSlotAt(islot);
1210*b1cdbd2cSJim Jagielski 	Assert(pslot->IsLineBreak(chwLB));
1211*b1cdbd2cSJim Jagielski@@ -1769,7 +1778,7 @@
1212*b1cdbd2cSJim Jagielski 	@param fBackingUp		- this chunk results in the stream position moving backwards,
1213*b1cdbd2cSJim Jagielski 								so clear anything we're backing over
1214*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1215*b1cdbd2cSJim Jagielski-void GrSlotStream::MapInputChunk(int islotInputMin, int islotOutputMin, int islotInputLim,
1216*b1cdbd2cSJim Jagielski+void GrSlotStream::MapInputChunk(int islotInputMin, int islotOutputMin, int /*islotInputLim*/,
1217*b1cdbd2cSJim Jagielski 	bool fSkipChunkStart, bool fBackingUp)
1218*b1cdbd2cSJim Jagielski {
1219*b1cdbd2cSJim Jagielski 	Assert(AssertValid());
1220*b1cdbd2cSJim Jagielski@@ -1828,7 +1837,7 @@
1221*b1cdbd2cSJim Jagielski 	@param fBackingUp		- this chunk results in the stream position moving backwards,
1222*b1cdbd2cSJim Jagielski 								so clear anything we're backing over
1223*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1224*b1cdbd2cSJim Jagielski-void GrSlotStream::MapOutputChunk(int islotOutputMin, int islotInputMin, int islotOutputLim,
1225*b1cdbd2cSJim Jagielski+void GrSlotStream::MapOutputChunk(int islotOutputMin, int islotInputMin, int /*islotOutputLim*/,
1226*b1cdbd2cSJim Jagielski 	bool fSkipChunkStart, int cslotReprocess, bool fBackingUp)
1227*b1cdbd2cSJim Jagielski {
1228*b1cdbd2cSJim Jagielski 	Assert(AssertValid());
1229*b1cdbd2cSJim Jagielski@@ -1863,7 +1872,11 @@
1230*b1cdbd2cSJim Jagielski 	Ensure that the chunk maps for a pair of streams match properly. The recipient is
1231*b1cdbd2cSJim Jagielski 	the input stream.
1232*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1233*b1cdbd2cSJim Jagielski+#ifdef _DEBUG
1234*b1cdbd2cSJim Jagielski void GrSlotStream::AssertChunkMapsValid(GrSlotStream * psstrmOut)
1235*b1cdbd2cSJim Jagielski+#else
1236*b1cdbd2cSJim Jagielski+void GrSlotStream::AssertChunkMapsValid(GrSlotStream * )
1237*b1cdbd2cSJim Jagielski+#endif
1238*b1cdbd2cSJim Jagielski {
1239*b1cdbd2cSJim Jagielski #ifdef _DEBUG
1240*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmIn = this;
1241*b1cdbd2cSJim Jagielski@@ -1915,7 +1924,11 @@
1242*b1cdbd2cSJim Jagielski 	Ensure that corresponding items in the streams of a positioning pass have matching
1243*b1cdbd2cSJim Jagielski 	stream indices. The recipient is the output stream.
1244*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1245*b1cdbd2cSJim Jagielski+#ifdef _DEBUG
1246*b1cdbd2cSJim Jagielski void GrSlotStream::AssertStreamIndicesValid(GrSlotStream * psstrmIn)
1247*b1cdbd2cSJim Jagielski+#else
1248*b1cdbd2cSJim Jagielski+void GrSlotStream::AssertStreamIndicesValid(GrSlotStream * )
1249*b1cdbd2cSJim Jagielski+#endif
1250*b1cdbd2cSJim Jagielski {
1251*b1cdbd2cSJim Jagielski #ifdef _DEBUG
1252*b1cdbd2cSJim Jagielski 	if (!GotIndexOffset())
1253*b1cdbd2cSJim Jagielski@@ -1939,7 +1948,11 @@
1254*b1cdbd2cSJim Jagielski 	in the output stream. (Currently the compiler ensures this by making it an error
1255*b1cdbd2cSJim Jagielski 	to write rules that don't do this.)
1256*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1257*b1cdbd2cSJim Jagielski+#ifdef _DEBUG
1258*b1cdbd2cSJim Jagielski void GrSlotStream::AssertAttachmentsInOutput(int islotMin, int islotLim)
1259*b1cdbd2cSJim Jagielski+#else
1260*b1cdbd2cSJim Jagielski+void GrSlotStream::AssertAttachmentsInOutput(int , int )
1261*b1cdbd2cSJim Jagielski+#endif
1262*b1cdbd2cSJim Jagielski {
1263*b1cdbd2cSJim Jagielski #ifdef _DEBUG
1264*b1cdbd2cSJim Jagielski 	for (int islot = islotMin; islot < islotLim; islot++)
1265*b1cdbd2cSJim Jagielski@@ -2007,7 +2016,11 @@
1266*b1cdbd2cSJim Jagielski 	Record the number of slots in the stream that are previous to the official start of the
1267*b1cdbd2cSJim Jagielski 	segment.
1268*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1269*b1cdbd2cSJim Jagielski+#ifdef _DEBUG
1270*b1cdbd2cSJim Jagielski void GrSlotStream::CalcIndexOffset(GrTableManager * ptman)
1271*b1cdbd2cSJim Jagielski+#else
1272*b1cdbd2cSJim Jagielski+void GrSlotStream::CalcIndexOffset(GrTableManager * )
1273*b1cdbd2cSJim Jagielski+#endif
1274*b1cdbd2cSJim Jagielski {
1275*b1cdbd2cSJim Jagielski 	if (GotIndexOffset())
1276*b1cdbd2cSJim Jagielski 		return; // already figured it
1277*b1cdbd2cSJim Jagielski@@ -2203,6 +2212,21 @@
1278*b1cdbd2cSJim Jagielski }
1279*b1cdbd2cSJim Jagielski
1280*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
1281*b1cdbd2cSJim Jagielski+	In the middle of running a pass, return the given slot to use in processing.
1282*b1cdbd2cSJim Jagielski+	Read it from the reprocess buffer if appropriate, or for slots previous to the current
1283*b1cdbd2cSJim Jagielski+	position, read from the output stream (psstrmNext).
1284*b1cdbd2cSJim Jagielski+
1285*b1cdbd2cSJim Jagielski+	psstrmNext may be NULL when processing is complete, therefore we only have one stream to
1286*b1cdbd2cSJim Jagielski+	deal with.
1287*b1cdbd2cSJim Jagielski+----------------------------------------------------------------------------------------------*/
1288*b1cdbd2cSJim Jagielski+GrSlotState * GrSlotStream::MidPassSlotAt(int islot, GrSlotStream * psstrmNext)
1289*b1cdbd2cSJim Jagielski+{
1290*b1cdbd2cSJim Jagielski+	int islotInput = islot - ReadPosForNextGet() + 1; // +1 because RuleInputSlot takes 0 to mean the previously read slot
1291*b1cdbd2cSJim Jagielski+	GrSlotState * pslot = RuleInputSlot(islotInput, psstrmNext);
1292*b1cdbd2cSJim Jagielski+	return pslot;
1293*b1cdbd2cSJim Jagielski+}
1294*b1cdbd2cSJim Jagielski+
1295*b1cdbd2cSJim Jagielski+/*----------------------------------------------------------------------------------------------
1296*b1cdbd2cSJim Jagielski 	Return the "current" input item from the rule's perspective, ie, the last slot read.
1297*b1cdbd2cSJim Jagielski 	So dislotOffset = 0 means not the slot at the read position but one slot earlier.
1298*b1cdbd2cSJim Jagielski
1299*b1cdbd2cSJim Jagielski@@ -2214,7 +2238,6 @@
1300*b1cdbd2cSJim Jagielski 	@param fNullOkay	- true if it's okay to return NULL in the situation where we're asking
1301*b1cdbd2cSJim Jagielski 							for something before the beginning of the stream
1302*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1303*b1cdbd2cSJim Jagielski-
1304*b1cdbd2cSJim Jagielski GrSlotState * GrSlotStream::RuleInputSlot(int dislotOffset, GrSlotStream * psstrmOutput,
1305*b1cdbd2cSJim Jagielski 	bool fNullOkay)
1306*b1cdbd2cSJim Jagielski {
1307*b1cdbd2cSJim Jagielski@@ -2244,8 +2267,10 @@
1308*b1cdbd2cSJim Jagielski
1309*b1cdbd2cSJim Jagielski 			if (cslotOffsetBack >= cslotPostReproc + cslotValidReproc)
1310*b1cdbd2cSJim Jagielski 			{
1311*b1cdbd2cSJim Jagielski-				// Read from the output stream.
1312*b1cdbd2cSJim Jagielski-				int dislotTmp = dislotOffset - 1 + cslotPostReproc + cslotValidReproc;
1313*b1cdbd2cSJim Jagielski+				// Read from the output stream. (Remember that PeekBack works relative to
1314*b1cdbd2cSJim Jagielski+				// the rule-start write position, not the current write position.)
1315*b1cdbd2cSJim Jagielski+				int dislotTmp = dislotOffset - 1 + cslotPostReproc
1316*b1cdbd2cSJim Jagielski+					+ cslotValidReproc - SlotsToReprocess();
1317*b1cdbd2cSJim Jagielski 				Assert(dislotTmp < 0);
1318*b1cdbd2cSJim Jagielski 				return psstrmOutput->PeekBack(dislotTmp);
1319*b1cdbd2cSJim Jagielski 			}
1320*b1cdbd2cSJim Jagielski@@ -2253,7 +2278,7 @@
1321*b1cdbd2cSJim Jagielski 			{
1322*b1cdbd2cSJim Jagielski 				if (m_islotReprocPos > -1)
1323*b1cdbd2cSJim Jagielski 				{
1324*b1cdbd2cSJim Jagielski-					//	Current read pos is inside reprocess buffer.
1325*b1cdbd2cSJim Jagielski+					//	Current read pos could be inside reprocess buffer.
1326*b1cdbd2cSJim Jagielski 					Assert(cslotPostReproc == 0);
1327*b1cdbd2cSJim Jagielski 					int islotStartReadReprocBuf = m_vpslotReproc.size() - cslotValidReproc;
1328*b1cdbd2cSJim Jagielski 					Assert(islotStartReadReprocBuf >= 0);
1329*b1cdbd2cSJim Jagielski@@ -2342,9 +2367,10 @@
1330*b1cdbd2cSJim Jagielski 			else if (pslotAfter)
1331*b1cdbd2cSJim Jagielski 				pslot->Associate(pslotAfter);
1332*b1cdbd2cSJim Jagielski 			else
1333*b1cdbd2cSJim Jagielski+			{
1334*b1cdbd2cSJim Jagielski 				// Weird, but can happen with an empty segment.
1335*b1cdbd2cSJim Jagielski 				Warn("No assocations");
1336*b1cdbd2cSJim Jagielski-
1337*b1cdbd2cSJim Jagielski+			}
1338*b1cdbd2cSJim Jagielski //			Assert(pslot->m_vpslotAssoc.Size() > 0);
1339*b1cdbd2cSJim Jagielski 			pslot->m_fNeutralAssocs = true;
1340*b1cdbd2cSJim Jagielski 		}
1341*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrSlotStream.h	Thu Jan 22 00:36:42 2009
1342*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotStream.h	Sat Aug 22 19:36:34 2009
1343*b1cdbd2cSJim Jagielski@@ -107,7 +107,7 @@
1344*b1cdbd2cSJim Jagielski 		ReleaseSlots(0, m_vpslot.size());
1345*b1cdbd2cSJim Jagielski 	}
1346*b1cdbd2cSJim Jagielski
1347*b1cdbd2cSJim Jagielski-	void ReleaseSlots(int islotMin, int islotLim)
1348*b1cdbd2cSJim Jagielski+	void ReleaseSlots(int /*islotMin*/, int /*islotLim*/)
1349*b1cdbd2cSJim Jagielski 	{
1350*b1cdbd2cSJim Jagielski 		//	A slot stream is responsible for deleting the slot states that it created,
1351*b1cdbd2cSJim Jagielski 		//	that is, the ones whose modified tag equals this stream's pass index.
1352*b1cdbd2cSJim Jagielski@@ -182,6 +182,7 @@
1353*b1cdbd2cSJim Jagielski 		return Peek(islot - ReadPosForNextGet());
1354*b1cdbd2cSJim Jagielski 	}
1355*b1cdbd2cSJim Jagielski
1356*b1cdbd2cSJim Jagielski+	//	Return the functional read position, taking into account the reprocess buffer.
1357*b1cdbd2cSJim Jagielski 	int ReadPosForNextGet()
1358*b1cdbd2cSJim Jagielski 	{
1359*b1cdbd2cSJim Jagielski 		return ReadPos() - SlotsToReprocess();
1360*b1cdbd2cSJim Jagielski@@ -260,12 +261,16 @@
1361*b1cdbd2cSJim Jagielski
1362*b1cdbd2cSJim Jagielski 	void MarkFullyWritten();
1363*b1cdbd2cSJim Jagielski
1364*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
1365*b1cdbd2cSJim Jagielski+	void SetSegMin(int islot, bool /*fAdjusting*/ = false)
1366*b1cdbd2cSJim Jagielski+#else
1367*b1cdbd2cSJim Jagielski 	void SetSegMin(int islot, bool fAdjusting = false)
1368*b1cdbd2cSJim Jagielski+#endif
1369*b1cdbd2cSJim Jagielski 	{
1370*b1cdbd2cSJim Jagielski 		Assert(fAdjusting || m_islotSegMin == -1 || m_islotSegMin == islot);
1371*b1cdbd2cSJim Jagielski 		m_islotSegMin = islot;
1372*b1cdbd2cSJim Jagielski 	}
1373*b1cdbd2cSJim Jagielski-	void SetSegMinToWritePos(bool fMod = true)
1374*b1cdbd2cSJim Jagielski+	void SetSegMinToWritePos(bool /*fMod*/ = true)
1375*b1cdbd2cSJim Jagielski 	{
1376*b1cdbd2cSJim Jagielski 		if (m_islotSegMin == -1)
1377*b1cdbd2cSJim Jagielski 			m_islotSegMin = m_islotWritePos;
1378*b1cdbd2cSJim Jagielski@@ -456,6 +461,7 @@
1379*b1cdbd2cSJim Jagielski 		}
1380*b1cdbd2cSJim Jagielski 	}
1381*b1cdbd2cSJim Jagielski
1382*b1cdbd2cSJim Jagielski+	GrSlotState * MidPassSlotAt(int islot, GrSlotStream * psstrmNext = NULL);
1383*b1cdbd2cSJim Jagielski 	GrSlotState * RuleInputSlot(int dislot = 0, GrSlotStream * psstrmOut = NULL,
1384*b1cdbd2cSJim Jagielski 		bool fNullOkay = false);
1385*b1cdbd2cSJim Jagielski 	GrSlotState * RuleOutputSlot(int dislot = 0);
1386*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrTableManager.cpp	Wed Jan 28 04:01:29 2009
1387*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrTableManager.cpp	Sat Aug 22 19:36:34 2009
1388*b1cdbd2cSJim Jagielski@@ -25,8 +25,8 @@
1389*b1cdbd2cSJim Jagielski DEFINE_THIS_FILE
1390*b1cdbd2cSJim Jagielski #ifndef _WIN32
1391*b1cdbd2cSJim Jagielski #include <stdlib.h>
1392*b1cdbd2cSJim Jagielski-#include <math.h>
1393*b1cdbd2cSJim Jagielski #endif
1394*b1cdbd2cSJim Jagielski+#include <math.h>
1395*b1cdbd2cSJim Jagielski
1396*b1cdbd2cSJim Jagielski //:>********************************************************************************************
1397*b1cdbd2cSJim Jagielski //:>	Forward declarations
1398*b1cdbd2cSJim Jagielski@@ -572,7 +572,7 @@
1399*b1cdbd2cSJim Jagielski 		else
1400*b1cdbd2cSJim Jagielski 		{
1401*b1cdbd2cSJim Jagielski 			Assert(!m_engst.m_fInsertedLB);
1402*b1cdbd2cSJim Jagielski-			Assert(islotUnderBreak == -1 || m_engst.m_fFinalLB);
1403*b1cdbd2cSJim Jagielski+			//Assert(islotUnderBreak == -1 || m_engst.m_fFinalLB); -- no, ExtendGlyphIDOutput clearly sets islotUnderBreak regardless
1404*b1cdbd2cSJim Jagielski 		}
1405*b1cdbd2cSJim Jagielski 		int islotTmp = OutputStream(m_cpass - 1)->WritePos();
1406*b1cdbd2cSJim Jagielski 		GrSlotState * pslotTmp;
1407*b1cdbd2cSJim Jagielski@@ -931,7 +931,7 @@
1408*b1cdbd2cSJim Jagielski 	@param plbFound			- kind of line-break created
1409*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1410*b1cdbd2cSJim Jagielski bool GrTableManager::Backtrack(int * pislotPrevBreak,
1411*b1cdbd2cSJim Jagielski-	LineBrk * plbMin, LineBrk lbMax, TrWsHandling twsh, bool fMoreText,
1412*b1cdbd2cSJim Jagielski+	LineBrk * plbMin, LineBrk lbMax, TrWsHandling twsh, bool /*fMoreText*/,
1413*b1cdbd2cSJim Jagielski 	int ichwCallerBtLim, bool fEndLine,
1414*b1cdbd2cSJim Jagielski 	LineBrk * plbFound)
1415*b1cdbd2cSJim Jagielski {
1416*b1cdbd2cSJim Jagielski@@ -1343,7 +1343,7 @@
1417*b1cdbd2cSJim Jagielski 	Calculate the associations, and record the output slots in the segment.
1418*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1419*b1cdbd2cSJim Jagielski void GrTableManager::RecordAssocsAndOutput(Font * pfont,
1420*b1cdbd2cSJim Jagielski-	Segment * pseg, bool fWidthIsCharCount,
1421*b1cdbd2cSJim Jagielski+	Segment * pseg, bool /*fWidthIsCharCount*/,
1422*b1cdbd2cSJim Jagielski 	TrWsHandling twsh, bool fParaRtl, int nDirDepth)
1423*b1cdbd2cSJim Jagielski {
1424*b1cdbd2cSJim Jagielski 	int cchwUnderlying = pseg->stopCharacter() - pseg->startCharacter();
1425*b1cdbd2cSJim Jagielski@@ -1362,7 +1362,7 @@
1426*b1cdbd2cSJim Jagielski #endif // OLD_TEST_STUFF
1427*b1cdbd2cSJim Jagielski
1428*b1cdbd2cSJim Jagielski 	//	Make sure the final positions are set for every glyph.
1429*b1cdbd2cSJim Jagielski-	CalcPositionsUpTo(m_cpass-1, reinterpret_cast<GrSlotState *>(NULL),
1430*b1cdbd2cSJim Jagielski+	CalcPositionsUpTo(m_cpass-1, reinterpret_cast<GrSlotState *>(NULL), false,
1431*b1cdbd2cSJim Jagielski 		&xsTotalWidth, &xsVisWidth);
1432*b1cdbd2cSJim Jagielski 	pseg->SetWidths(xsVisWidth, xsTotalWidth);
1433*b1cdbd2cSJim Jagielski
1434*b1cdbd2cSJim Jagielski@@ -1377,7 +1377,7 @@
1435*b1cdbd2cSJim Jagielski 	Calculate the underlying-to-surface associations and ligature mappings.
1436*b1cdbd2cSJim Jagielski 	Assumes the arrays have been properly initialized.
1437*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1438*b1cdbd2cSJim Jagielski-void GrTableManager::CalculateAssociations(Segment * pseg, int csloutSurface)
1439*b1cdbd2cSJim Jagielski+void GrTableManager::CalculateAssociations(Segment * pseg, int /*csloutSurface*/)
1440*b1cdbd2cSJim Jagielski {
1441*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmFinal = OutputStream(m_cpass-1);
1442*b1cdbd2cSJim Jagielski
1443*b1cdbd2cSJim Jagielski@@ -2350,18 +2350,20 @@
1444*b1cdbd2cSJim Jagielski 								final pass, but it could be another if positions are
1445*b1cdbd2cSJim Jagielski 								requested by the rules themselves
1446*b1cdbd2cSJim Jagielski 	@param pslotLast		- last slot that needs to be positioned, or NULL
1447*b1cdbd2cSJim Jagielski+	@param fMidPass			- calculating the position of some slot in the middle of the pass
1448*b1cdbd2cSJim Jagielski 	@param pxsWidth			- return the total width used so far
1449*b1cdbd2cSJim Jagielski 	@param psxVisibleWidth	- return the visible width so far
1450*b1cdbd2cSJim Jagielski
1451*b1cdbd2cSJim Jagielski 	MOVE to EngineState
1452*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1453*b1cdbd2cSJim Jagielski-void GrTableManager::CalcPositionsUpTo(int ipass, GrSlotState * pslotLast,
1454*b1cdbd2cSJim Jagielski+void GrTableManager::CalcPositionsUpTo(int ipass, GrSlotState * pslotLast, bool fMidPass,
1455*b1cdbd2cSJim Jagielski 	float * pxsWidth, float * pxsVisibleWidth)
1456*b1cdbd2cSJim Jagielski {
1457*b1cdbd2cSJim Jagielski 	Assert(ipass >= m_ipassPos1 - 1);
1458*b1cdbd2cSJim Jagielski
1459*b1cdbd2cSJim Jagielski 	int isstrm = ipass;
1460*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrm = OutputStream(isstrm);
1461*b1cdbd2cSJim Jagielski+	GrSlotStream * psstrmNext = (isstrm >= m_cpass - 1) ? NULL : OutputStream(isstrm + 1);
1462*b1cdbd2cSJim Jagielski 	Assert(psstrm->GotIndexOffset());
1463*b1cdbd2cSJim Jagielski 	if (psstrm->WritePos() <= psstrm->IndexOffset())
1464*b1cdbd2cSJim Jagielski 	{
1465*b1cdbd2cSJim Jagielski@@ -2399,7 +2401,9 @@
1466*b1cdbd2cSJim Jagielski 	//	to be later in the stream than the last actual slot passed in.
1467*b1cdbd2cSJim Jagielski 	if (!psstrm->HasSlotAtPosPassIndex(pslotLast->AttachRootPosPassIndex()))
1468*b1cdbd2cSJim Jagielski 		return;
1469*b1cdbd2cSJim Jagielski-	GrSlotState * pslotLastBase = pslotLast->Base(psstrm);
1470*b1cdbd2cSJim Jagielski+	GrSlotState * pslotLastBase = (fMidPass && pslotLast->PosPassIndex() < psstrm->WritePos())
1471*b1cdbd2cSJim Jagielski+		? pslotLast->Base(psstrmNext)
1472*b1cdbd2cSJim Jagielski+		: pslotLast->Base(psstrm);
1473*b1cdbd2cSJim Jagielski
1474*b1cdbd2cSJim Jagielski 	if (ipass == m_cpass - 1 && m_engst.m_islotPosNext > -1)
1475*b1cdbd2cSJim Jagielski 	{
1476*b1cdbd2cSJim Jagielski@@ -2428,6 +2432,7 @@
1477*b1cdbd2cSJim Jagielski 	}
1478*b1cdbd2cSJim Jagielski
1479*b1cdbd2cSJim Jagielski 	std::vector<GrSlotState *> vpslotAttached;
1480*b1cdbd2cSJim Jagielski+	std::vector<GrSlotStream *> vpsstrmAttached;
1481*b1cdbd2cSJim Jagielski
1482*b1cdbd2cSJim Jagielski 	bool fRtl = RightToLeft();
1483*b1cdbd2cSJim Jagielski
1484*b1cdbd2cSJim Jagielski@@ -2435,13 +2440,24 @@
1485*b1cdbd2cSJim Jagielski 	{
1486*b1cdbd2cSJim Jagielski 		Assert(islot < psstrm->SlotsPresent());
1487*b1cdbd2cSJim Jagielski
1488*b1cdbd2cSJim Jagielski-		pslot = (isstrm == ipass) ?	psstrm->SlotAt(islot) :	psstrm->OutputSlotAt(islot);
1489*b1cdbd2cSJim Jagielski+		GrSlotStream * psstrmThis = psstrm;
1490*b1cdbd2cSJim Jagielski+		if (fMidPass && islot < psstrm->WritePos())
1491*b1cdbd2cSJim Jagielski+		{
1492*b1cdbd2cSJim Jagielski+			pslot = psstrm->MidPassSlotAt(islot, psstrmNext);
1493*b1cdbd2cSJim Jagielski+			psstrmThis = psstrmNext;
1494*b1cdbd2cSJim Jagielski+		}
1495*b1cdbd2cSJim Jagielski+		else
1496*b1cdbd2cSJim Jagielski+		{
1497*b1cdbd2cSJim Jagielski+			//pslot = (isstrm == ipass) ?	psstrm->SlotAt(islot) :	psstrm->OutputSlotAt(islot);
1498*b1cdbd2cSJim Jagielski+			pslot = psstrm->SlotAt(islot);
1499*b1cdbd2cSJim Jagielski+		}
1500*b1cdbd2cSJim Jagielski
1501*b1cdbd2cSJim Jagielski 		if (!pslot->IsBase())
1502*b1cdbd2cSJim Jagielski 		{
1503*b1cdbd2cSJim Jagielski 			//	This slot is attached to another; it will be positioned strictly
1504*b1cdbd2cSJim Jagielski 			//	relative to that one. This happens in the loop below.
1505*b1cdbd2cSJim Jagielski 			vpslotAttached.push_back(pslot);
1506*b1cdbd2cSJim Jagielski+			vpsstrmAttached.push_back(psstrmThis);
1507*b1cdbd2cSJim Jagielski 		}
1508*b1cdbd2cSJim Jagielski 		else
1509*b1cdbd2cSJim Jagielski 		{
1510*b1cdbd2cSJim Jagielski@@ -2455,7 +2471,7 @@
1511*b1cdbd2cSJim Jagielski 			}
1512*b1cdbd2cSJim Jagielski
1513*b1cdbd2cSJim Jagielski 			//	Make sure the metrics are the complete ones.
1514*b1cdbd2cSJim Jagielski-			pslot->CalcCompositeMetrics(this, psstrm, kPosInfinity, true);
1515*b1cdbd2cSJim Jagielski+			pslot->CalcCompositeMetrics(this, psstrm, psstrmNext, kPosInfinity, true);
1516*b1cdbd2cSJim Jagielski
1517*b1cdbd2cSJim Jagielski 			float xsInc = pslot->GlyphXOffset(psstrm, fakeItalicRatio);
1518*b1cdbd2cSJim Jagielski 			float ysInc = pslot->GlyphYOffset(psstrm);
1519*b1cdbd2cSJim Jagielski@@ -2514,8 +2530,9 @@
1520*b1cdbd2cSJim Jagielski
1521*b1cdbd2cSJim Jagielski 	for (size_t ipslot = 0; ipslot < vpslotAttached.size(); ipslot++)
1522*b1cdbd2cSJim Jagielski 	{
1523*b1cdbd2cSJim Jagielski-		GrSlotState * pslot = vpslotAttached[ipslot];
1524*b1cdbd2cSJim Jagielski-		GrSlotState * pslotBase = pslot->Base(psstrm);
1525*b1cdbd2cSJim Jagielski+		GrSlotState * pslotAtt = vpslotAttached[ipslot];
1526*b1cdbd2cSJim Jagielski+		GrSlotStream * psstrmAtt = vpsstrmAttached[ipslot];
1527*b1cdbd2cSJim Jagielski+		GrSlotState * pslotBase = pslotAtt->Base(psstrmAtt);
1528*b1cdbd2cSJim Jagielski 		if (pslotBase->XPosition() == kNegInfinity || pslotBase->YPosition() == kNegInfinity)
1529*b1cdbd2cSJim Jagielski 		{
1530*b1cdbd2cSJim Jagielski 			Assert(false);
1531*b1cdbd2cSJim Jagielski@@ -2523,10 +2540,10 @@
1532*b1cdbd2cSJim Jagielski 		}
1533*b1cdbd2cSJim Jagielski 		float xsCluster = pslotBase->XPosition() - pslotBase->GlyphXOffset(psstrm, fakeItalicRatio);
1534*b1cdbd2cSJim Jagielski 		float ysCluster = pslotBase->YPosition() - pslotBase->GlyphYOffset(psstrm);
1535*b1cdbd2cSJim Jagielski-		float xsInc = pslot->GlyphXOffset(psstrm, fakeItalicRatio);
1536*b1cdbd2cSJim Jagielski-		float ysInc = pslot->GlyphYOffset(psstrm);
1537*b1cdbd2cSJim Jagielski-		pslot->SetXPos(xsCluster + xsInc);
1538*b1cdbd2cSJim Jagielski-		pslot->SetYPos(ysCluster + ysInc);
1539*b1cdbd2cSJim Jagielski+		float xsInc = pslotAtt->GlyphXOffset(psstrm, fakeItalicRatio);
1540*b1cdbd2cSJim Jagielski+		float ysInc = pslotAtt->GlyphYOffset(psstrm);
1541*b1cdbd2cSJim Jagielski+		pslotAtt->SetXPos(xsCluster + xsInc);
1542*b1cdbd2cSJim Jagielski+		pslotAtt->SetYPos(ysCluster + ysInc);
1543*b1cdbd2cSJim Jagielski
1544*b1cdbd2cSJim Jagielski 		//	My theory is that we don't need to adjust *pxsWidth here, because the width of
1545*b1cdbd2cSJim Jagielski 		//	any non-base slots should be factored into the advance width of their cluster
1546*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/GrTableManager.h	Wed Jan 28 04:01:29 2009
1547*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrTableManager.h	Sat Aug 22 19:36:35 2009
1548*b1cdbd2cSJim Jagielski@@ -442,7 +442,7 @@
1549*b1cdbd2cSJim Jagielski 	int LogToEmUnits(float xys);
1550*b1cdbd2cSJim Jagielski 	bool GPointToXY(gid16 chwGlyphID, int nGPoint, float * xs, float * ys);
1551*b1cdbd2cSJim Jagielski
1552*b1cdbd2cSJim Jagielski-	void CalcPositionsUpTo(int ipass, GrSlotState * pslotLast,
1553*b1cdbd2cSJim Jagielski+	void CalcPositionsUpTo(int ipass, GrSlotState * pslotLast, bool fMidPass,
1554*b1cdbd2cSJim Jagielski 		float * pxsWidth, float * pxsVisibleWidth);
1555*b1cdbd2cSJim Jagielski
1556*b1cdbd2cSJim Jagielski 	void InitPosCache()
1557*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/Platform.cpp	Thu Jan 22 00:36:42 2009
1558*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/Platform.cpp	Sat Aug 22 19:36:35 2009
1559*b1cdbd2cSJim Jagielski@@ -103,7 +103,7 @@
1560*b1cdbd2cSJim Jagielski {
1561*b1cdbd2cSJim Jagielski 	// assumes NULL terminated strings
1562*b1cdbd2cSJim Jagielski 	const utf16 *start = s;
1563*b1cdbd2cSJim Jagielski-	for (; *s; ++s);
1564*b1cdbd2cSJim Jagielski+	for (; *s; ++s) {};
1565*b1cdbd2cSJim Jagielski
1566*b1cdbd2cSJim Jagielski 	return s - start;
1567*b1cdbd2cSJim Jagielski }
1568*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/Segment.cpp	Thu Aug 21 16:24:32 2008
1569*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/Segment.cpp	Sat Aug 22 19:36:35 2009
1570*b1cdbd2cSJim Jagielski@@ -1178,7 +1178,7 @@
1571*b1cdbd2cSJim Jagielski 	part of the segment.
1572*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1573*b1cdbd2cSJim Jagielski float Segment::getRangeWidth(int ichMin, int ichLim,
1574*b1cdbd2cSJim Jagielski-	bool fStartLine, bool fEndLine, bool fSkipSpace)
1575*b1cdbd2cSJim Jagielski+	bool /*fStartLine*/, bool /*fEndLine*/, bool fSkipSpace)
1576*b1cdbd2cSJim Jagielski {
1577*b1cdbd2cSJim Jagielski 	if (m_dxsWidth < 0)
1578*b1cdbd2cSJim Jagielski 	{
1579*b1cdbd2cSJim Jagielski@@ -1549,7 +1549,11 @@
1580*b1cdbd2cSJim Jagielski void Segment::SetUpOutputArrays(Font * pfont, GrTableManager * ptman,
1581*b1cdbd2cSJim Jagielski 	GrSlotStream * psstrmFinal,
1582*b1cdbd2cSJim Jagielski 	int cchwInThisSeg, int csloutSurface, gid16 chwLB,
1583*b1cdbd2cSJim Jagielski+#ifdef NDEBUG
1584*b1cdbd2cSJim Jagielski+	TrWsHandling twsh, bool fParaRtl, int nDirDepth, bool /*fEmpty*/)
1585*b1cdbd2cSJim Jagielski+#else
1586*b1cdbd2cSJim Jagielski 	TrWsHandling twsh, bool fParaRtl, int nDirDepth, bool fEmpty)
1587*b1cdbd2cSJim Jagielski+#endif
1588*b1cdbd2cSJim Jagielski {
1589*b1cdbd2cSJim Jagielski 	m_mFontEmUnits = EngineImpl()->GetFontEmUnits();
1590*b1cdbd2cSJim Jagielski
1591*b1cdbd2cSJim Jagielski@@ -1725,7 +1729,7 @@
1592*b1cdbd2cSJim Jagielski 	Set up the data structures that represent the actual rendered glyphs for the new segment.
1593*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1594*b1cdbd2cSJim Jagielski void Segment::SetUpGlyphInfo(GrTableManager * ptman, GrSlotStream * psstrmFinal,
1595*b1cdbd2cSJim Jagielski-	gid16 chwLB, int nDirDepth, int islotMin, int cslot)
1596*b1cdbd2cSJim Jagielski+	gid16 chwLB, int /*nDirDepth*/, int islotMin, int cslot)
1597*b1cdbd2cSJim Jagielski {
1598*b1cdbd2cSJim Jagielski 	//int paraDirLevel = (ptman->State()->ParaRightToLeft()) ? 1 : 0;
1599*b1cdbd2cSJim Jagielski
1600*b1cdbd2cSJim Jagielski@@ -1751,7 +1755,7 @@
1601*b1cdbd2cSJim Jagielski
1602*b1cdbd2cSJim Jagielski 	m_isloutGinf0 = -1;
1603*b1cdbd2cSJim Jagielski 	int iginf = 0;
1604*b1cdbd2cSJim Jagielski-	for (int islot = islotMin; islot < cslot; islot++)
1605*b1cdbd2cSJim Jagielski+	for (islot = islotMin; islot < cslot; islot++)
1606*b1cdbd2cSJim Jagielski 	{
1607*b1cdbd2cSJim Jagielski 		GrSlotState * pslot = psstrmFinal->SlotAt(islot);
1608*b1cdbd2cSJim Jagielski
1609*b1cdbd2cSJim Jagielski@@ -2160,7 +2164,7 @@
1610*b1cdbd2cSJim Jagielski 	@param ichwUnder		- character index relative to the official beginning of the segment
1611*b1cdbd2cSJim Jagielski 	@param islot			- processed glyph it maps to
1612*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1613*b1cdbd2cSJim Jagielski-void Segment::MarkSlotInPrevSeg(int ichwUnder, int islot)
1614*b1cdbd2cSJim Jagielski+void Segment::MarkSlotInPrevSeg(int ichwUnder, int /*islot*/)
1615*b1cdbd2cSJim Jagielski {
1616*b1cdbd2cSJim Jagielski 	if (ichwUnder >= m_ichwAssocsMin)
1617*b1cdbd2cSJim Jagielski 		m_prgisloutBefore[ichwUnder - m_ichwAssocsMin] = kNegInfinity;
1618*b1cdbd2cSJim Jagielski@@ -2174,7 +2178,7 @@
1619*b1cdbd2cSJim Jagielski 	@param ichwUnder		- character index relative to the official beginning of the segment
1620*b1cdbd2cSJim Jagielski 	@param islot			- processed glyph it maps to
1621*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1622*b1cdbd2cSJim Jagielski-void Segment::MarkSlotInNextSeg(int ichwUnder, int islot)
1623*b1cdbd2cSJim Jagielski+void Segment::MarkSlotInNextSeg(int ichwUnder, int /*islot*/)
1624*b1cdbd2cSJim Jagielski {
1625*b1cdbd2cSJim Jagielski 	if (ichwUnder < m_ichwAssocsLim)
1626*b1cdbd2cSJim Jagielski 		m_prgisloutAfter[ichwUnder - m_ichwAssocsMin] = kPosInfinity;
1627*b1cdbd2cSJim Jagielski@@ -2351,7 +2355,7 @@
1628*b1cdbd2cSJim Jagielski 	@param pfAfter			- return true if they clicked on trailing side; possibly NULL
1629*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1630*b1cdbd2cSJim Jagielski int Segment::LogicalSurfaceToUnderlying(int islout, float xsOffset, float ysClick,
1631*b1cdbd2cSJim Jagielski-	float dxsGlyphWidth, float dysGlyphHeight, bool * pfAfter)
1632*b1cdbd2cSJim Jagielski+	float dxsGlyphWidth, float /*dysGlyphHeight*/, bool * pfAfter)
1633*b1cdbd2cSJim Jagielski {
1634*b1cdbd2cSJim Jagielski 	Assert(islout >= 0);
1635*b1cdbd2cSJim Jagielski 	Assert(islout < m_cslout);
1636*b1cdbd2cSJim Jagielski@@ -2529,31 +2533,31 @@
1637*b1cdbd2cSJim Jagielski 	else if (fBefore)
1638*b1cdbd2cSJim Jagielski 	{
1639*b1cdbd2cSJim Jagielski 		int isloutRet;
1640*b1cdbd2cSJim Jagielski-		int ichw = ichwSegOffset;
1641*b1cdbd2cSJim Jagielski+		int ichwTemp = ichwSegOffset;
1642*b1cdbd2cSJim Jagielski 		//	If no association has been made, loop forward to the next slot
1643*b1cdbd2cSJim Jagielski 		//	we are before. As a last resort, answer kPosInfinity, meaning we
1644*b1cdbd2cSJim Jagielski 		//	aren't before anything.
1645*b1cdbd2cSJim Jagielski 		do
1646*b1cdbd2cSJim Jagielski 		{
1647*b1cdbd2cSJim Jagielski-			isloutRet = m_prgisloutBefore[ichw - m_ichwAssocsMin];
1648*b1cdbd2cSJim Jagielski-			do { ++ichw; }
1649*b1cdbd2cSJim Jagielski-			while (!GrCharStream::AtUnicodeCharBoundary(m_pgts, ichw));
1650*b1cdbd2cSJim Jagielski-		} while (isloutRet == kPosInfinity && ichw < m_ichwAssocsLim);
1651*b1cdbd2cSJim Jagielski+			isloutRet = m_prgisloutBefore[ichwTemp - m_ichwAssocsMin];
1652*b1cdbd2cSJim Jagielski+			do { ++ichwTemp; }
1653*b1cdbd2cSJim Jagielski+			while (!GrCharStream::AtUnicodeCharBoundary(m_pgts, ichwTemp));
1654*b1cdbd2cSJim Jagielski+		} while (isloutRet == kPosInfinity && ichwTemp < m_ichwAssocsLim);
1655*b1cdbd2cSJim Jagielski 		return isloutRet;
1656*b1cdbd2cSJim Jagielski 	}
1657*b1cdbd2cSJim Jagielski 	else
1658*b1cdbd2cSJim Jagielski 	{
1659*b1cdbd2cSJim Jagielski 		int isloutRet;
1660*b1cdbd2cSJim Jagielski-		int ichw = ichwSegOffset;
1661*b1cdbd2cSJim Jagielski+		int ichwTemp = ichwSegOffset;
1662*b1cdbd2cSJim Jagielski 		//	If no association has been made, loop backward to the previous slot
1663*b1cdbd2cSJim Jagielski 		//	we are after. As a last resort, answer kNegInfinity, meaning we
1664*b1cdbd2cSJim Jagielski 		//	aren't after anything.
1665*b1cdbd2cSJim Jagielski 		do
1666*b1cdbd2cSJim Jagielski 		{
1667*b1cdbd2cSJim Jagielski-			isloutRet = m_prgisloutAfter[ichw - m_ichwAssocsMin];
1668*b1cdbd2cSJim Jagielski-			do { --ichw; }
1669*b1cdbd2cSJim Jagielski-			while (!GrCharStream::AtUnicodeCharBoundary(m_pgts, ichw));
1670*b1cdbd2cSJim Jagielski-		} while (isloutRet == kNegInfinity && ichw >= 0);
1671*b1cdbd2cSJim Jagielski+			isloutRet = m_prgisloutAfter[ichwTemp - m_ichwAssocsMin];
1672*b1cdbd2cSJim Jagielski+			do { --ichwTemp; }
1673*b1cdbd2cSJim Jagielski+			while (!GrCharStream::AtUnicodeCharBoundary(m_pgts, ichwTemp));
1674*b1cdbd2cSJim Jagielski+		} while (isloutRet == kNegInfinity && ichwTemp >= 0);
1675*b1cdbd2cSJim Jagielski 		return isloutRet;
1676*b1cdbd2cSJim Jagielski 	}
1677*b1cdbd2cSJim Jagielski 	Assert(false); // should never reach here
1678*b1cdbd2cSJim Jagielski@@ -2748,7 +2752,11 @@
1679*b1cdbd2cSJim Jagielski 	that root glyph as one of its roots.
1680*b1cdbd2cSJim Jagielski 	OBSOLETE
1681*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1682*b1cdbd2cSJim Jagielski+#ifdef _DEBUG
1683*b1cdbd2cSJim Jagielski void Segment::AssertValidClusters(GrSlotStream * psstrm)
1684*b1cdbd2cSJim Jagielski+#else
1685*b1cdbd2cSJim Jagielski+void Segment::AssertValidClusters(GrSlotStream * /*psstrm*/)
1686*b1cdbd2cSJim Jagielski+#endif
1687*b1cdbd2cSJim Jagielski {
1688*b1cdbd2cSJim Jagielski #ifdef _DEBUG
1689*b1cdbd2cSJim Jagielski 	for (int islot = 0; islot < psstrm->WritePos(); islot++)
1690*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/src/segment/TransductionLog.cpp	Wed Jan 28 04:01:29 2009
1691*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/TransductionLog.cpp	Sat Aug 22 19:36:35 2009
1692*b1cdbd2cSJim Jagielski@@ -175,7 +175,7 @@
1693*b1cdbd2cSJim Jagielski 	Output a file showing a log of the transduction process and the resulting segment.
1694*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1695*b1cdbd2cSJim Jagielski void GrTableManager::WriteXductnLog(std::ostream & strmOut,
1696*b1cdbd2cSJim Jagielski-	GrCharStream * pchstrm, Segment * psegRet,
1697*b1cdbd2cSJim Jagielski+	GrCharStream * pchstrm, Segment * /*psegRet*/,
1698*b1cdbd2cSJim Jagielski 	int cbPrevSegDat, byte * pbPrevSegDat)
1699*b1cdbd2cSJim Jagielski {
1700*b1cdbd2cSJim Jagielski 	if (cbPrevSegDat == 0)
1701*b1cdbd2cSJim Jagielski@@ -416,8 +416,8 @@
1702*b1cdbd2cSJim Jagielski 	the raw (UTF-16 or UTF-8) chars for display. To do this we get the raw characters
1703*b1cdbd2cSJim Jagielski 	directly from the text source.
1704*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1705*b1cdbd2cSJim Jagielski-void GrCharStream::GetLogDataRaw(GrTableManager * ptman, int cchl, int cchrBackup,
1706*b1cdbd2cSJim Jagielski-	int cchrMaxRaw, int * prgchl,
1707*b1cdbd2cSJim Jagielski+void GrCharStream::GetLogDataRaw(GrTableManager * /*ptman*/, int cchl, int cchrBackup,
1708*b1cdbd2cSJim Jagielski+	int /*cchrMaxRaw*/, int * prgchl,
1709*b1cdbd2cSJim Jagielski 	utf16 * prgchw2, utf16 * prgchw3, utf16 * prgchw4, utf16 * prgchw5, utf16 * prgchw6,
1710*b1cdbd2cSJim Jagielski 	int * prgcchr)
1711*b1cdbd2cSJim Jagielski {
1712*b1cdbd2cSJim Jagielski@@ -441,7 +441,7 @@
1713*b1cdbd2cSJim Jagielski 	case kutf8:
1714*b1cdbd2cSJim Jagielski 		prgchsRunText8 = new utf8[cchrRange];
1715*b1cdbd2cSJim Jagielski 		m_pgts->fetch(ichrMin, cchrRange, prgchsRunText8);
1716*b1cdbd2cSJim Jagielski-		for (int ichr = 0; ichr < cchrRange; ichr++)
1717*b1cdbd2cSJim Jagielski+		for (ichr = 0; ichr < cchrRange; ichr++)
1718*b1cdbd2cSJim Jagielski 			prgchwRunText[ichr] = (utf16)prgchsRunText8[ichr];	// zero-extend into UTF-16 buffer
1719*b1cdbd2cSJim Jagielski 		break;
1720*b1cdbd2cSJim Jagielski 	case kutf16:
1721*b1cdbd2cSJim Jagielski@@ -634,7 +634,7 @@
1722*b1cdbd2cSJim Jagielski 	m_pzpst->LogRulesFiredAndFailed(strmOut, psstrmIn);
1723*b1cdbd2cSJim Jagielski }
1724*b1cdbd2cSJim Jagielski
1725*b1cdbd2cSJim Jagielski-void PassState::LogRulesFiredAndFailed(std::ostream & strmOut, GrSlotStream * psstrmIn)
1726*b1cdbd2cSJim Jagielski+void PassState::LogRulesFiredAndFailed(std::ostream & strmOut, GrSlotStream * /*psstrmIn*/)
1727*b1cdbd2cSJim Jagielski {
1728*b1cdbd2cSJim Jagielski
1729*b1cdbd2cSJim Jagielski 	strmOut << "PASS " << m_ipass << "\n\n" << "Rules matched: ";
1730*b1cdbd2cSJim Jagielski@@ -1193,7 +1193,7 @@
1731*b1cdbd2cSJim Jagielski 	if (fAnyPseudos)
1732*b1cdbd2cSJim Jagielski 	{
1733*b1cdbd2cSJim Jagielski 		strmOut << "Actual glyphs: ";
1734*b1cdbd2cSJim Jagielski-		for (int islout = 0; islout < m_cslout; islout++)
1735*b1cdbd2cSJim Jagielski+		for (islout = 0; islout < m_cslout; islout++)
1736*b1cdbd2cSJim Jagielski 		{
1737*b1cdbd2cSJim Jagielski 			GrSlotOutput * psloutTmp = m_prgslout + islout;
1738*b1cdbd2cSJim Jagielski 			if (psloutTmp->GlyphID() != psloutTmp->ActualGlyphForOutput(ptman))
1739*b1cdbd2cSJim Jagielski@@ -1319,7 +1319,7 @@
1740*b1cdbd2cSJim Jagielski 	Write out the header lines for the slot contents.
1741*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1742*b1cdbd2cSJim Jagielski void GrTableManager::LogSlotHeader(std::ostream & strmOut, int islotLim,
1743*b1cdbd2cSJim Jagielski-	int cspPerSlot, int cspLeading, int islotMin)
1744*b1cdbd2cSJim Jagielski+	int /*cspPerSlot*/, int cspLeading, int islotMin)
1745*b1cdbd2cSJim Jagielski {
1746*b1cdbd2cSJim Jagielski 	islotLim = min(islotLim, MAX_SLOTS);
1747*b1cdbd2cSJim Jagielski
1748*b1cdbd2cSJim Jagielski@@ -1721,7 +1721,7 @@
1749*b1cdbd2cSJim Jagielski
1750*b1cdbd2cSJim Jagielski 	case kslatAttAtX:	// always do these in pairs
1751*b1cdbd2cSJim Jagielski 	case kslatAttAtY:
1752*b1cdbd2cSJim Jagielski-		if (m_mAttachAtX != (pslotPrev ? pslotPrev->m_mAttachAtX : kNotYetSet) ||
1753*b1cdbd2cSJim Jagielski+		if (m_mAttachAtX != (pslotPrev ? pslotPrev->m_mAttachAtX : static_cast<short>(kNotYetSet)) ||
1754*b1cdbd2cSJim Jagielski 			m_mAttachAtY != (pslotPrev ? pslotPrev->m_mAttachAtY : 0))
1755*b1cdbd2cSJim Jagielski 		{
1756*b1cdbd2cSJim Jagielski 			ptman->LogInTable(strmOut,
1757*b1cdbd2cSJim Jagielski@@ -1730,7 +1730,7 @@
1758*b1cdbd2cSJim Jagielski 		}
1759*b1cdbd2cSJim Jagielski 		break;
1760*b1cdbd2cSJim Jagielski 	case kslatAttAtGpt:
1761*b1cdbd2cSJim Jagielski-		if (m_nAttachAtGpoint != (pslotPrev ? pslotPrev->m_nAttachAtGpoint : kNotYetSet))
1762*b1cdbd2cSJim Jagielski+		if (m_nAttachAtGpoint != (pslotPrev ? pslotPrev->m_nAttachAtGpoint : static_cast<short>(kNotYetSet)))
1763*b1cdbd2cSJim Jagielski 		{
1764*b1cdbd2cSJim Jagielski 			ptman->LogInTable(strmOut,
1765*b1cdbd2cSJim Jagielski 				((m_nAttachAtGpoint == kGpointZero) ? 0 : m_nAttachAtGpoint));
1766*b1cdbd2cSJim Jagielski@@ -1750,7 +1750,7 @@
1767*b1cdbd2cSJim Jagielski
1768*b1cdbd2cSJim Jagielski 	case kslatAttWithX:	// always do these in pairs
1769*b1cdbd2cSJim Jagielski 	case kslatAttWithY:
1770*b1cdbd2cSJim Jagielski-		if (m_mAttachWithX != (pslotPrev ? pslotPrev->m_mAttachWithX : kNotYetSet) ||
1771*b1cdbd2cSJim Jagielski+		if (m_mAttachWithX != (pslotPrev ? pslotPrev->m_mAttachWithX : static_cast<short>(kNotYetSet)) ||
1772*b1cdbd2cSJim Jagielski 			m_mAttachWithY != (pslotPrev ? pslotPrev->m_mAttachWithY : 0))
1773*b1cdbd2cSJim Jagielski 		{
1774*b1cdbd2cSJim Jagielski 			ptman->LogInTable(strmOut,
1775*b1cdbd2cSJim Jagielski@@ -1759,7 +1759,7 @@
1776*b1cdbd2cSJim Jagielski 		}
1777*b1cdbd2cSJim Jagielski 		break;
1778*b1cdbd2cSJim Jagielski 	case kslatAttWithGpt:
1779*b1cdbd2cSJim Jagielski-		if (m_nAttachWithGpoint != (pslotPrev ? pslotPrev->m_nAttachWithGpoint : kNotYetSet))
1780*b1cdbd2cSJim Jagielski+		if (m_nAttachWithGpoint != (pslotPrev ? pslotPrev->m_nAttachWithGpoint : static_cast<short>(kNotYetSet)))
1781*b1cdbd2cSJim Jagielski 		{
1782*b1cdbd2cSJim Jagielski 			ptman->LogInTable(strmOut,
1783*b1cdbd2cSJim Jagielski 				((m_nAttachWithGpoint == kGpointZero) ? 0 : m_nAttachWithGpoint));
1784*b1cdbd2cSJim Jagielski@@ -1786,14 +1786,14 @@
1785*b1cdbd2cSJim Jagielski 		break;
1786*b1cdbd2cSJim Jagielski
1787*b1cdbd2cSJim Jagielski 	case kslatBreak:
1788*b1cdbd2cSJim Jagielski-		if (m_lb != (pslotPrev ? pslotPrev->m_lb : kNotYetSet8))
1789*b1cdbd2cSJim Jagielski+		if (m_lb != (pslotPrev ? pslotPrev->m_lb : static_cast<sdata8>(kNotYetSet8)))
1790*b1cdbd2cSJim Jagielski 		{
1791*b1cdbd2cSJim Jagielski 			ptman->LogBreakWeightInTable(strmOut, m_lb);
1792*b1cdbd2cSJim Jagielski 			return;
1793*b1cdbd2cSJim Jagielski 		}
1794*b1cdbd2cSJim Jagielski 		break;
1795*b1cdbd2cSJim Jagielski 	case kslatDir:
1796*b1cdbd2cSJim Jagielski-		if (m_dirc != (pslotPrev ? pslotPrev->m_dirc : kNotYetSet8))
1797*b1cdbd2cSJim Jagielski+		if (m_dirc != (pslotPrev ? pslotPrev->m_dirc : static_cast<sdata8>(kNotYetSet8)))
1798*b1cdbd2cSJim Jagielski 		{
1799*b1cdbd2cSJim Jagielski 			ptman->LogDirCodeInTable(strmOut, m_dirc);
1800*b1cdbd2cSJim Jagielski 			return;
1801*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/test/ProfileHarness/GrUtfTextSrc.cpp	Thu Jan 22 00:36:42 2009
1802*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/ProfileHarness/GrUtfTextSrc.cpp	Sat Aug 22 19:36:35 2009
1803*b1cdbd2cSJim Jagielski@@ -210,12 +210,12 @@
1804*b1cdbd2cSJim Jagielski }
1805*b1cdbd2cSJim Jagielski
1806*b1cdbd2cSJim Jagielski
1807*b1cdbd2cSJim Jagielski-bool GrUtfTextSrc::getRightToLeft(gr::toffset ich)
1808*b1cdbd2cSJim Jagielski+bool GrUtfTextSrc::getRightToLeft(gr::toffset /*ich*/)
1809*b1cdbd2cSJim Jagielski {
1810*b1cdbd2cSJim Jagielski 	return mRtl; // assumes src only contains one direction
1811*b1cdbd2cSJim Jagielski }
1812*b1cdbd2cSJim Jagielski
1813*b1cdbd2cSJim Jagielski-unsigned int GrUtfTextSrc::getDirectionDepth(gr::toffset ich)
1814*b1cdbd2cSJim Jagielski+unsigned int GrUtfTextSrc::getDirectionDepth(gr::toffset /*ich*/)
1815*b1cdbd2cSJim Jagielski {
1816*b1cdbd2cSJim Jagielski 	return (mRtl) ? 1 : 0; // TBD
1817*b1cdbd2cSJim Jagielski }
1818*b1cdbd2cSJim Jagielski@@ -254,7 +254,7 @@
1819*b1cdbd2cSJim Jagielski 	return range;
1820*b1cdbd2cSJim Jagielski }
1821*b1cdbd2cSJim Jagielski
1822*b1cdbd2cSJim Jagielski-size_t GrUtfTextSrc::getFontFeatures(gr::toffset ich, gr::FeatureSetting * prgfset)
1823*b1cdbd2cSJim Jagielski+size_t GrUtfTextSrc::getFontFeatures(gr::toffset /*ich*/, gr::FeatureSetting * /*prgfset*/)
1824*b1cdbd2cSJim Jagielski {
1825*b1cdbd2cSJim Jagielski 	return 0;
1826*b1cdbd2cSJim Jagielski }
1827*b1cdbd2cSJim Jagielski@@ -277,14 +277,14 @@
1828*b1cdbd2cSJim Jagielski
1829*b1cdbd2cSJim Jagielski // these should be called I hope
1830*b1cdbd2cSJim Jagielski float
1831*b1cdbd2cSJim Jagielski-GrUtfTextSrc::getFontSize(gr::toffset ich)
1832*b1cdbd2cSJim Jagielski+GrUtfTextSrc::getFontSize(gr::toffset /*ich*/)
1833*b1cdbd2cSJim Jagielski {
1834*b1cdbd2cSJim Jagielski 	assert(mFont);
1835*b1cdbd2cSJim Jagielski 	return mPointSize;
1836*b1cdbd2cSJim Jagielski }
1837*b1cdbd2cSJim Jagielski
1838*b1cdbd2cSJim Jagielski bool
1839*b1cdbd2cSJim Jagielski-GrUtfTextSrc::getBold(gr::toffset ich)
1840*b1cdbd2cSJim Jagielski+GrUtfTextSrc::getBold(gr::toffset /*ich*/)
1841*b1cdbd2cSJim Jagielski {
1842*b1cdbd2cSJim Jagielski 	assert(mFont);
1843*b1cdbd2cSJim Jagielski //	NS_ASSERTION(false, "unexpected call to getBold");
1844*b1cdbd2cSJim Jagielski@@ -293,7 +293,7 @@
1845*b1cdbd2cSJim Jagielski }
1846*b1cdbd2cSJim Jagielski
1847*b1cdbd2cSJim Jagielski bool
1848*b1cdbd2cSJim Jagielski-GrUtfTextSrc::getItalic(gr::toffset ich)
1849*b1cdbd2cSJim Jagielski+GrUtfTextSrc::getItalic(gr::toffset /*ich*/)
1850*b1cdbd2cSJim Jagielski {
1851*b1cdbd2cSJim Jagielski 	assert(mFont);
1852*b1cdbd2cSJim Jagielski 	//NS_ASSERTION(false, "unexpected call to getItalic");
1853*b1cdbd2cSJim Jagielski@@ -301,7 +301,7 @@
1854*b1cdbd2cSJim Jagielski 	return mFont->italic();
1855*b1cdbd2cSJim Jagielski }
1856*b1cdbd2cSJim Jagielski
1857*b1cdbd2cSJim Jagielski-gr::isocode GrUtfTextSrc::getLanguage(gr::toffset ich)
1858*b1cdbd2cSJim Jagielski+gr::isocode GrUtfTextSrc::getLanguage(gr::toffset /*ich*/)
1859*b1cdbd2cSJim Jagielski {
1860*b1cdbd2cSJim Jagielski   gr::isocode unknown;
1861*b1cdbd2cSJim Jagielski   std::fill_n(unknown.rgch, 4, '\0');
1862*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/test/ProfileHarness/GrUtfTextSrc.h	Thu Jan 22 00:36:42 2009
1863*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/ProfileHarness/GrUtfTextSrc.h	Sat Aug 22 19:36:35 2009
1864*b1cdbd2cSJim Jagielski@@ -79,7 +79,7 @@
1865*b1cdbd2cSJim Jagielski   virtual size_t fetch(gr::toffset ichMin, size_t cch, gr::utf32 * prgchBuffer);
1866*b1cdbd2cSJim Jagielski   virtual size_t fetch(gr::toffset ichMin, size_t cch, gr::utf16 * prgchwBuffer);
1867*b1cdbd2cSJim Jagielski   virtual size_t fetch(gr::toffset ichMin, size_t cch, gr::utf8  * prgchsBuffer);
1868*b1cdbd2cSJim Jagielski-  virtual gr::GrResult getFaceName(int ich, unsigned int cchMax,
1869*b1cdbd2cSJim Jagielski+  virtual gr::GrResult getFaceName(int /*ich*/, unsigned int /*cchMax*/,
1870*b1cdbd2cSJim Jagielski     gr::utf16 * prgchFaceName, unsigned int * pcchLen)
1871*b1cdbd2cSJim Jagielski   {
1872*b1cdbd2cSJim Jagielski     prgchFaceName[0] = 0;
1873*b1cdbd2cSJim Jagielski@@ -92,12 +92,12 @@
1874*b1cdbd2cSJim Jagielski   virtual bool getItalic(gr::toffset ich);
1875*b1cdbd2cSJim Jagielski   virtual bool getRightToLeft(gr::toffset ich);
1876*b1cdbd2cSJim Jagielski   virtual unsigned int getDirectionDepth(gr::toffset ich);
1877*b1cdbd2cSJim Jagielski-  virtual float getVerticalOffset(gr::toffset ich) { return 0;};
1878*b1cdbd2cSJim Jagielski+  virtual float getVerticalOffset(gr::toffset /*ich*/) { return 0;};
1879*b1cdbd2cSJim Jagielski   virtual gr::isocode getLanguage(gr::toffset ich);
1880*b1cdbd2cSJim Jagielski
1881*b1cdbd2cSJim Jagielski   virtual std::pair<gr::toffset, gr::toffset> propertyRange(gr::toffset ich);
1882*b1cdbd2cSJim Jagielski   virtual size_t getFontFeatures(gr::toffset ich, gr::FeatureSetting * prgfset);
1883*b1cdbd2cSJim Jagielski-  virtual bool sameSegment(gr::toffset ich1, gr::toffset ich2) { return true; };
1884*b1cdbd2cSJim Jagielski+  virtual bool sameSegment(gr::toffset /*ich1*/, gr::toffset /*ich2*/) { return true; };
1885*b1cdbd2cSJim Jagielski
1886*b1cdbd2cSJim Jagielski protected:
1887*b1cdbd2cSJim Jagielski   bool checkBuffer8();
1888*b1cdbd2cSJim Jagielski@@ -129,11 +129,11 @@
1889*b1cdbd2cSJim Jagielski   virtual void getColors(gr::toffset ich, int * pclrFore, int * pclrBack);
1890*b1cdbd2cSJim Jagielski
1891*b1cdbd2cSJim Jagielski   // Shouldn't be here!
1892*b1cdbd2cSJim Jagielski-  virtual gr::GrResult Fetch(int ichMin, int ichLim, gr::utf16 * prgchBuf) { return gr::kresNotImpl; };
1893*b1cdbd2cSJim Jagielski-  virtual gr::GrResult get_Length(int * pcch) { return gr::kresNotImpl; };
1894*b1cdbd2cSJim Jagielski-  virtual gr::GrResult GetFontVariations(int ich,
1895*b1cdbd2cSJim Jagielski-    wchar_t * prgchFontVar, int ichMax, int * pich,
1896*b1cdbd2cSJim Jagielski-    int * pichMin, int * pichLim) { return gr::kresNotImpl; };
1897*b1cdbd2cSJim Jagielski+  virtual gr::GrResult Fetch(int /*ichMin*/, int /*ichLim*/, gr::utf16 * /*prgchBuf*/) { return gr::kresNotImpl; };
1898*b1cdbd2cSJim Jagielski+  virtual gr::GrResult get_Length(int * /*pcch*/) { return gr::kresNotImpl; };
1899*b1cdbd2cSJim Jagielski+  virtual gr::GrResult GetFontVariations(int /*ich*/,
1900*b1cdbd2cSJim Jagielski+    wchar_t * /*prgchFontVar*/, int /*ichMax*/, int * /*pich*/,
1901*b1cdbd2cSJim Jagielski+    int * /*pichMin*/, int * /*pichLim*/) { return gr::kresNotImpl; };
1902*b1cdbd2cSJim Jagielski
1903*b1cdbd2cSJim Jagielski };
1904*b1cdbd2cSJim Jagielski
1905*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/test/ProfileHarness/ProfileHarness.cpp	Thu Jan 22 00:36:42 2009
1906*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/ProfileHarness/ProfileHarness.cpp	Sat Aug 22 19:36:35 2009
1907*b1cdbd2cSJim Jagielski@@ -39,14 +39,14 @@
1908*b1cdbd2cSJim Jagielski typedef std::pair< gr::GlyphIterator, gr::GlyphIterator > GlyphRange;
1909*b1cdbd2cSJim Jagielski
1910*b1cdbd2cSJim Jagielski #ifndef HAVE_STRTOF
1911*b1cdbd2cSJim Jagielski-float strtof(char * text, char ** ignore)
1912*b1cdbd2cSJim Jagielski+float strtof(char * text, char ** /*ignore*/)
1913*b1cdbd2cSJim Jagielski {
1914*b1cdbd2cSJim Jagielski   return static_cast<float>(atof(text));
1915*b1cdbd2cSJim Jagielski }
1916*b1cdbd2cSJim Jagielski #endif
1917*b1cdbd2cSJim Jagielski
1918*b1cdbd2cSJim Jagielski #ifndef HAVE_STRTOL
1919*b1cdbd2cSJim Jagielski-long strtol(char * text, char ** ignore)
1920*b1cdbd2cSJim Jagielski+long strtol(char * text, char ** /*ignore*/)
1921*b1cdbd2cSJim Jagielski {
1922*b1cdbd2cSJim Jagielski   return atol(text);
1923*b1cdbd2cSJim Jagielski }
1924*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.cpp	Thu Jan 22 00:36:42 2009
1925*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.cpp	Sat Aug 22 19:36:35 2009
1926*b1cdbd2cSJim Jagielski@@ -327,7 +327,7 @@
1927*b1cdbd2cSJim Jagielski 					&dxStretchAchieved);
1928*b1cdbd2cSJim Jagielski 				for (int iiiGlyph = 0; iiiGlyph < cStretchable; iiiGlyph++)
1929*b1cdbd2cSJim Jagielski 				{
1930*b1cdbd2cSJim Jagielski-					int iiGlyph = viiGlyphsRem[iiiGlyph];
1931*b1cdbd2cSJim Jagielski+					iiGlyph = viiGlyphsRem[iiiGlyph];
1932*b1cdbd2cSJim Jagielski 					vdxStretchLeft[iiGlyph] = vdxStretchRem[iiiGlyph];
1933*b1cdbd2cSJim Jagielski 					vdxWidth[iiGlyph] = vdxWidthRem[iiiGlyph];
1934*b1cdbd2cSJim Jagielski 				}
1935*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/test/RegressionTest/RegressionTest.cpp	Thu Jan 22 00:36:42 2009
1936*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/RegressionTest.cpp	Sat Aug 22 19:36:35 2009
1937*b1cdbd2cSJim Jagielski@@ -675,7 +675,7 @@
1938*b1cdbd2cSJim Jagielski 	OutputErrorAux(ptcase, strErr, i, true, valueFound, valueExpected);
1939*b1cdbd2cSJim Jagielski }
1940*b1cdbd2cSJim Jagielski
1941*b1cdbd2cSJim Jagielski-void OutputErrorAux(TestCase * ptcase, std::string strErr, int i,
1942*b1cdbd2cSJim Jagielski+void OutputErrorAux(TestCase * /*ptcase*/, std::string strErr, int i,
1943*b1cdbd2cSJim Jagielski 	bool showValues, int valueFound, int valueExpected)
1944*b1cdbd2cSJim Jagielski {
1945*b1cdbd2cSJim Jagielski //	if (g_debugMode)
1946*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.cpp	Thu Jan 22 00:36:42 2009
1947*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.cpp	Sat Aug 22 19:36:36 2009
1948*b1cdbd2cSJim Jagielski@@ -70,7 +70,7 @@
1949*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
1950*b1cdbd2cSJim Jagielski 	Return true if the text uses a right-to-left writing system.
1951*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1952*b1cdbd2cSJim Jagielski-bool SimpleTextSrc::getRightToLeft(toffset ich)
1953*b1cdbd2cSJim Jagielski+bool SimpleTextSrc::getRightToLeft(toffset /*ich*/)
1954*b1cdbd2cSJim Jagielski {
1955*b1cdbd2cSJim Jagielski 	return false;
1956*b1cdbd2cSJim Jagielski }
1957*b1cdbd2cSJim Jagielski@@ -78,7 +78,7 @@
1958*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
1959*b1cdbd2cSJim Jagielski 	Return the depth of embedding of the writing system.
1960*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1961*b1cdbd2cSJim Jagielski-unsigned int SimpleTextSrc::getDirectionDepth(toffset ich)
1962*b1cdbd2cSJim Jagielski+unsigned int SimpleTextSrc::getDirectionDepth(toffset /*ich*/)
1963*b1cdbd2cSJim Jagielski {
1964*b1cdbd2cSJim Jagielski 	return 0;
1965*b1cdbd2cSJim Jagielski }
1966*b1cdbd2cSJim Jagielski@@ -87,7 +87,7 @@
1967*b1cdbd2cSJim Jagielski 	Return the vertical offset of the text. This simple implementation provides no
1968*b1cdbd2cSJim Jagielski 	vertical offset.
1969*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
1970*b1cdbd2cSJim Jagielski-float SimpleTextSrc::getVerticalOffset(toffset ich)
1971*b1cdbd2cSJim Jagielski+float SimpleTextSrc::getVerticalOffset(toffset /*ich*/)
1972*b1cdbd2cSJim Jagielski {
1973*b1cdbd2cSJim Jagielski 	return 0;
1974*b1cdbd2cSJim Jagielski }
1975*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.h	Thu Jan 22 00:36:42 2009
1976*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.h	Sat Aug 22 19:36:36 2009
1977*b1cdbd2cSJim Jagielski@@ -59,12 +59,12 @@
1978*b1cdbd2cSJim Jagielski 	{
1979*b1cdbd2cSJim Jagielski 		return m_cchLength;
1980*b1cdbd2cSJim Jagielski 	}
1981*b1cdbd2cSJim Jagielski-	virtual size_t fetch(toffset ichMin, size_t cch, utf32 * prgchBuffer)
1982*b1cdbd2cSJim Jagielski+	virtual size_t fetch(toffset /*ichMin*/, size_t /*cch*/, utf32 * /*prgchBuffer*/)
1983*b1cdbd2cSJim Jagielski 	{
1984*b1cdbd2cSJim Jagielski 		throw;
1985*b1cdbd2cSJim Jagielski 	}
1986*b1cdbd2cSJim Jagielski 	virtual size_t fetch(toffset ichMin, size_t cch, gr::utf16 * prgchwBuffer);
1987*b1cdbd2cSJim Jagielski-	virtual size_t fetch(toffset ichMin, size_t cch, utf8  * prgchsBuffer)
1988*b1cdbd2cSJim Jagielski+	virtual size_t fetch(toffset /*ichMin*/, size_t /*cch*/, utf8  * /*prgchsBuffer*/)
1989*b1cdbd2cSJim Jagielski 	{
1990*b1cdbd2cSJim Jagielski 		throw;
1991*b1cdbd2cSJim Jagielski 	};
1992*b1cdbd2cSJim Jagielski@@ -73,14 +73,14 @@
1993*b1cdbd2cSJim Jagielski 	virtual unsigned int getDirectionDepth(toffset ich);
1994*b1cdbd2cSJim Jagielski 	virtual float getVerticalOffset(toffset ich);
1995*b1cdbd2cSJim Jagielski
1996*b1cdbd2cSJim Jagielski-	virtual isocode getLanguage(toffset ich)
1997*b1cdbd2cSJim Jagielski+	virtual isocode getLanguage(toffset /*ich*/)
1998*b1cdbd2cSJim Jagielski 	{
1999*b1cdbd2cSJim Jagielski 		isocode ret;
2000*b1cdbd2cSJim Jagielski 		ret.rgch[0] = 'e'; ret.rgch[1] = 'n'; ret.rgch[2] = 0; ret.rgch[3] = 0;
2001*b1cdbd2cSJim Jagielski 		return ret;
2002*b1cdbd2cSJim Jagielski 	}
2003*b1cdbd2cSJim Jagielski
2004*b1cdbd2cSJim Jagielski-	virtual std::pair<toffset, toffset> propertyRange(toffset ich)
2005*b1cdbd2cSJim Jagielski+	virtual std::pair<toffset, toffset> propertyRange(toffset /*ich*/)
2006*b1cdbd2cSJim Jagielski 	{
2007*b1cdbd2cSJim Jagielski 		std::pair<toffset, toffset> pairRet;
2008*b1cdbd2cSJim Jagielski 		pairRet.first = 0;
2009*b1cdbd2cSJim Jagielski@@ -88,16 +88,16 @@
2010*b1cdbd2cSJim Jagielski 		return pairRet;
2011*b1cdbd2cSJim Jagielski 	}
2012*b1cdbd2cSJim Jagielski
2013*b1cdbd2cSJim Jagielski-	virtual size_t getFontFeatures(toffset ich, FeatureSetting * prgfset)
2014*b1cdbd2cSJim Jagielski+	virtual size_t getFontFeatures(toffset /*ich*/, FeatureSetting * /*prgfset*/)
2015*b1cdbd2cSJim Jagielski 	{
2016*b1cdbd2cSJim Jagielski 		return 0; // no features in this simple implementation
2017*b1cdbd2cSJim Jagielski 	}
2018*b1cdbd2cSJim Jagielski-	virtual bool sameSegment(toffset ich1, toffset ich2)
2019*b1cdbd2cSJim Jagielski+	virtual bool sameSegment(toffset /*ich1*/, toffset /*ich2*/)
2020*b1cdbd2cSJim Jagielski 	{
2021*b1cdbd2cSJim Jagielski 		return true;
2022*b1cdbd2cSJim Jagielski 	}
2023*b1cdbd2cSJim Jagielski
2024*b1cdbd2cSJim Jagielski-	virtual void getColors(toffset ich, int * pclrFore, int * pclrBack)
2025*b1cdbd2cSJim Jagielski+	virtual void getColors(toffset /*ich*/, int * pclrFore, int * pclrBack)
2026*b1cdbd2cSJim Jagielski 	{
2027*b1cdbd2cSJim Jagielski 		*pclrFore = kclrBlack;
2028*b1cdbd2cSJim Jagielski 		*pclrBack = kclrTransparent;
2029*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/wrappers/win32/WinFont.cpp	Thu Jan 29 10:33:19 2009
2030*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/wrappers/win32/WinFont.cpp	Sat Aug 22 19:36:36 2009
2031*b1cdbd2cSJim Jagielski@@ -70,6 +72,7 @@
2032*b1cdbd2cSJim Jagielski 	// But don't store m_hfont, because we don't really "own" it; the client is
2033*b1cdbd2cSJim Jagielski 	// responsible for releasing it.
2034*b1cdbd2cSJim Jagielski 	m_hfont = 0;
2035*b1cdbd2cSJim Jagielski+    m_pGlyphMetricMap = NULL;
2036*b1cdbd2cSJim Jagielski 	memset(&m_fpropSet, 0, sizeof(m_fpropSet));
2037*b1cdbd2cSJim Jagielski
2038*b1cdbd2cSJim Jagielski 	m_pbCmapTbl = NULL;
2039*b1cdbd2cSJim Jagielski@@ -196,6 +198,7 @@
2040*b1cdbd2cSJim Jagielski 	m_hdc = 0;
2041*b1cdbd2cSJim Jagielski 	m_hfont = 0;
2042*b1cdbd2cSJim Jagielski 	m_hfontClient = 0;
2043*b1cdbd2cSJim Jagielski+    m_pGlyphMetricMap = NULL;
2044*b1cdbd2cSJim Jagielski 	memset(&m_fpropSet, 0, sizeof(FontProps));
2045*b1cdbd2cSJim Jagielski
2046*b1cdbd2cSJim Jagielski 	m_pbCmapTbl = NULL;
2047*b1cdbd2cSJim Jagielski@@ -408,7 +410,7 @@
2048*b1cdbd2cSJim Jagielski 					if (pPolyCurve->wType == TT_PRIM_QSPLINE &&
2049*b1cdbd2cSJim Jagielski 						// test if this is the last curve
2050*b1cdbd2cSJim Jagielski 						pPolyHdr->cb - (int)((byte *)(&pPolyCurve->apfx[j]) - (byte *)(pPolyHdr))
2051*b1cdbd2cSJim Jagielski-							== sizeof POINTFX &&
2052*b1cdbd2cSJim Jagielski+							== sizeof (POINTFX) &&
2053*b1cdbd2cSJim Jagielski 						// and the two points are identical
2054*b1cdbd2cSJim Jagielski 						CompareFixed(pPolyCurve->apfx[j].x, pPolyHdr->pfxStart.x) &&
2055*b1cdbd2cSJim Jagielski 						CompareFixed(pPolyCurve->apfx[j].y, pPolyHdr->pfxStart.y))
2056*b1cdbd2cSJim Jagielski@@ -457,6 +459,16 @@
2057*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
2058*b1cdbd2cSJim Jagielski void WinFont::getGlyphMetrics(gid16 chw, gr::Rect & boundingBox, gr::Point & advances)
2059*b1cdbd2cSJim Jagielski {
2060*b1cdbd2cSJim Jagielski+    if (m_pGlyphMetricMap)
2061*b1cdbd2cSJim Jagielski+    {
2062*b1cdbd2cSJim Jagielski+        GlyphMetricMap::iterator i = m_pGlyphMetricMap->find(chw);
2063*b1cdbd2cSJim Jagielski+        if (i != m_pGlyphMetricMap->end())
2064*b1cdbd2cSJim Jagielski+        {
2065*b1cdbd2cSJim Jagielski+            boundingBox = i->second.first;
2066*b1cdbd2cSJim Jagielski+            advances = i->second.second;
2067*b1cdbd2cSJim Jagielski+            return;
2068*b1cdbd2cSJim Jagielski+        }
2069*b1cdbd2cSJim Jagielski+    }
2070*b1cdbd2cSJim Jagielski 	GLYPHMETRICS gm;
2071*b1cdbd2cSJim Jagielski 	const MAT2 mat2 = {{0,1}, {0,0}, {0,0}, {0,1}};
2072*b1cdbd2cSJim Jagielski 	if (GDI_ERROR == ::GetGlyphOutline(m_hdc, chw, GGO_GLYPH_INDEX | GGO_METRICS,
2073*b1cdbd2cSJim Jagielski@@ -474,6 +476,10 @@
2074*b1cdbd2cSJim Jagielski 	boundingBox.bottom = (float)gm.gmptGlyphOrigin.y - gm.gmBlackBoxY;
2075*b1cdbd2cSJim Jagielski 	advances.x = gm.gmCellIncX;
2076*b1cdbd2cSJim Jagielski 	advances.y = gm.gmCellIncY;
2077*b1cdbd2cSJim Jagielski+    if (m_pGlyphMetricMap)
2078*b1cdbd2cSJim Jagielski+    {
2079*b1cdbd2cSJim Jagielski+        (*m_pGlyphMetricMap)[chw] = std::pair<gr::Rect,gr::Point>(boundingBox, advances);
2080*b1cdbd2cSJim Jagielski+    }
2081*b1cdbd2cSJim Jagielski }
2082*b1cdbd2cSJim Jagielski
2083*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
2084*b1cdbd2cSJim Jagielski@@ -618,7 +620,10 @@
2085*b1cdbd2cSJim Jagielski
2086*b1cdbd2cSJim Jagielski 		static int cCreateFontCalls = 0;
2087*b1cdbd2cSJim Jagielski 		static int cCreateFontZero = 0;
2088*b1cdbd2cSJim Jagielski-		HFONT hfont = g_fhc.GetFont(lf);
2089*b1cdbd2cSJim Jagielski+        FontHandleCache::FontCacheValue cache = g_fhc.GetCache(lf);
2090*b1cdbd2cSJim Jagielski+        HFONT hfont = cache.hfont;
2091*b1cdbd2cSJim Jagielski+        m_pGlyphMetricMap = cache.pGlyphMetricMap;
2092*b1cdbd2cSJim Jagielski+		//HFONT hfont = g_fhc.GetFont(lf);
2093*b1cdbd2cSJim Jagielski 		//char ch1[200];
2094*b1cdbd2cSJim Jagielski 		//if (hfont == 0)
2095*b1cdbd2cSJim Jagielski 		//{
2096*b1cdbd2cSJim Jagielski@@ -731,7 +733,7 @@
2097*b1cdbd2cSJim Jagielski 	@param lf LOGFONT value that describes the desired font
2098*b1cdbd2cSJim Jagielski 	@return Font handle
2099*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
2100*b1cdbd2cSJim Jagielski-HFONT WinFont::FontHandleCache::GetFont(LOGFONT & lf)
2101*b1cdbd2cSJim Jagielski+WinFont::FontHandleCache::FontCacheValue WinFont::FontHandleCache::GetCache(LOGFONT & lf)
2102*b1cdbd2cSJim Jagielski {
2103*b1cdbd2cSJim Jagielski 	FontCacheValue fcv;
2104*b1cdbd2cSJim Jagielski 	FontHandleHashMap::iterator itFound = m_hmlffcv.find(lf);
2105*b1cdbd2cSJim Jagielski@@ -752,11 +754,12 @@
2106*b1cdbd2cSJim Jagielski 			THROW(kresFail);
2107*b1cdbd2cSJim Jagielski
2108*b1cdbd2cSJim Jagielski 		fcv.nRefs = 1;
2109*b1cdbd2cSJim Jagielski+        fcv.pGlyphMetricMap = new GlyphMetricMap();
2110*b1cdbd2cSJim Jagielski
2111*b1cdbd2cSJim Jagielski 		m_hmlffcv.insert(std::pair<LOGFONT, FontCacheValue>(lf, fcv));
2112*b1cdbd2cSJim Jagielski 	}
2113*b1cdbd2cSJim Jagielski
2114*b1cdbd2cSJim Jagielski-	return fcv.hfont;
2115*b1cdbd2cSJim Jagielski+	return fcv;
2116*b1cdbd2cSJim Jagielski }
2117*b1cdbd2cSJim Jagielski
2118*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
2119*b1cdbd2cSJim Jagielski@@ -767,7 +767,7 @@
2120*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
2121*b1cdbd2cSJim Jagielski void WinFont::FontHandleCache::DeleteFont(HFONT hfont)
2122*b1cdbd2cSJim Jagielski {
2123*b1cdbd2cSJim Jagielski-	if (!hfont || !m_bValid)
2124*b1cdbd2cSJim Jagielski+	if (!hfont || !m_bValid || m_hmlffcv.size() == 0)
2125*b1cdbd2cSJim Jagielski 		return;
2126*b1cdbd2cSJim Jagielski
2127*b1cdbd2cSJim Jagielski 	// find the font in the hash map
2128*b1cdbd2cSJim Jagielski@@ -782,6 +784,8 @@
2129*b1cdbd2cSJim Jagielski 			{
2130*b1cdbd2cSJim Jagielski 				// delete font
2131*b1cdbd2cSJim Jagielski 				::DeleteObject(hfont);
2132*b1cdbd2cSJim Jagielski+                if (fcv.pGlyphMetricMap)
2133*b1cdbd2cSJim Jagielski+                    delete fcv.pGlyphMetricMap;
2134*b1cdbd2cSJim Jagielski 				m_hmlffcv.erase(it);
2135*b1cdbd2cSJim Jagielski 			}
2136*b1cdbd2cSJim Jagielski 			else
2137*b1cdbd2cSJim Jagielski@@ -832,7 +832,8 @@
2138*b1cdbd2cSJim Jagielski bool WinFont::LogFontHashFuncs::operator() (const WinFont::LogFontWrapper & key1,
2139*b1cdbd2cSJim Jagielski 	const WinFont::LogFontWrapper & key2) const
2140*b1cdbd2cSJim Jagielski {
2141*b1cdbd2cSJim Jagielski-	return (key1 == key2);
2142*b1cdbd2cSJim Jagielski+    // return true if key1 should be ordered before key2
2143*b1cdbd2cSJim Jagielski+    return (operator()(key1) < operator()(key2));
2144*b1cdbd2cSJim Jagielski }
2145*b1cdbd2cSJim Jagielski
2146*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------------------------
2147*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/wrappers/win32/WinFont.h	Thu Jan 29 10:33:19 2009
2148*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/wrappers/win32/WinFont.h	Sat Aug 22 19:36:36 2009
2149*b1cdbd2cSJim Jagielski@@ -27,7 +27,13 @@
2150*b1cdbd2cSJim Jagielski #include "GrClient.h"
2151*b1cdbd2cSJim Jagielski #include "Font.h"
2152*b1cdbd2cSJim Jagielski+#include <map>
2153*b1cdbd2cSJim Jagielski
2154*b1cdbd2cSJim Jagielski+#ifdef _STLPORT_VERSION
2155*b1cdbd2cSJim Jagielski+namespace stdext = _STLP_STD;
2156*b1cdbd2cSJim Jagielski+#endif
2157*b1cdbd2cSJim Jagielski+
2158*b1cdbd2cSJim Jagielski namespace gr
2159*b1cdbd2cSJim Jagielski {
2160*b1cdbd2cSJim Jagielski+typedef std::map<gid16, std::pair<gr::Rect, gr::Point> > GlyphMetricMap;
2161*b1cdbd2cSJim Jagielski
2162*b1cdbd2cSJim Jagielski class FontFace;
2163*b1cdbd2cSJim Jagielski@@ -100,6 +110,7 @@
2164*b1cdbd2cSJim Jagielski 	HFONT m_hfontClient;	// need to replace this HFONT into the DC when we are finished
2165*b1cdbd2cSJim Jagielski 							// with it
2166*b1cdbd2cSJim Jagielski
2167*b1cdbd2cSJim Jagielski+    GlyphMetricMap * m_pGlyphMetricMap;
2168*b1cdbd2cSJim Jagielski 	// Debugging:
2169*b1cdbd2cSJim Jagielski 	//OLECHAR m_rgchTemp[32];
2170*b1cdbd2cSJim Jagielski
2171*b1cdbd2cSJim Jagielski@@ -185,11 +196,13 @@
2172*b1cdbd2cSJim Jagielski 	class FontHandleCache // hungarian: fhc
2173*b1cdbd2cSJim Jagielski 	{
2174*b1cdbd2cSJim Jagielski 	public:
2175*b1cdbd2cSJim Jagielski-		struct FontCacheValue
2176*b1cdbd2cSJim Jagielski+        struct FontCacheValue
2177*b1cdbd2cSJim Jagielski 		{
2178*b1cdbd2cSJim Jagielski 			int nRefs;   // reference count
2179*b1cdbd2cSJim Jagielski 			HFONT hfont; // font handle
2180*b1cdbd2cSJim Jagielski
2181*b1cdbd2cSJim Jagielski+            GlyphMetricMap * pGlyphMetricMap; // glyph metrics
2182*b1cdbd2cSJim Jagielski+
2183*b1cdbd2cSJim Jagielski 			bool operator==(const FontCacheValue & val) const
2184*b1cdbd2cSJim Jagielski 			{
2185*b1cdbd2cSJim Jagielski 				return (hfont == val.hfont);
2186*b1cdbd2cSJim Jagielski@@ -199,7 +212,8 @@
2187*b1cdbd2cSJim Jagielski         FontHandleCache() : m_bValid(true) {};
2188*b1cdbd2cSJim Jagielski 		~FontHandleCache();
2189*b1cdbd2cSJim Jagielski
2190*b1cdbd2cSJim Jagielski-		HFONT GetFont(LOGFONT & lf);
2191*b1cdbd2cSJim Jagielski+		//HFONT GetFont(LOGFONT & lf);
2192*b1cdbd2cSJim Jagielski+        FontCacheValue GetCache(LOGFONT & lf);
2193*b1cdbd2cSJim Jagielski 		void DeleteFont(HFONT hfont);
2194*b1cdbd2cSJim Jagielski
2195*b1cdbd2cSJim Jagielski 		typedef stdext::hash_map<LogFontWrapper, FontCacheValue, LogFontHashFuncs> FontHandleHashMap;
2196*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/RtTextSrc.h~	2009-01-22 05:06:42.000000000 +0630
2197*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/RtTextSrc.h	2010-04-30 23:14:49.000000000 +0630
2198*b1cdbd2cSJim Jagielski@@ -44,18 +44,18 @@
2199*b1cdbd2cSJim Jagielski 		}
2200*b1cdbd2cSJim Jagielski 	}
2201*b1cdbd2cSJim Jagielski
2202*b1cdbd2cSJim Jagielski-	virtual size_t getFontFeatures(toffset ich, FeatureSetting * prgfset)
2203*b1cdbd2cSJim Jagielski+	virtual size_t getFontFeatures(toffset /*ich*/, FeatureSetting * prgfset)
2204*b1cdbd2cSJim Jagielski 	{
2205*b1cdbd2cSJim Jagielski 		// Note: size of prgfset buffer = gr::kMaxFeatures = 64
2206*b1cdbd2cSJim Jagielski 		std::copy(m_fset, m_fset + MAXFEAT, prgfset);
2207*b1cdbd2cSJim Jagielski 		return m_cFeats;
2208*b1cdbd2cSJim Jagielski 	}
2209*b1cdbd2cSJim Jagielski
2210*b1cdbd2cSJim Jagielski-	virtual bool getRightToLeft(toffset ich)
2211*b1cdbd2cSJim Jagielski+	virtual bool getRightToLeft(toffset /*ich*/)
2212*b1cdbd2cSJim Jagielski 	{
2213*b1cdbd2cSJim Jagielski 		return m_fRtl;
2214*b1cdbd2cSJim Jagielski 	}
2215*b1cdbd2cSJim Jagielski-	virtual unsigned int getDirectionDepth(toffset ich)
2216*b1cdbd2cSJim Jagielski+	virtual unsigned int getDirectionDepth(toffset /*ich*/)
2217*b1cdbd2cSJim Jagielski 	{
2218*b1cdbd2cSJim Jagielski 		return ((m_fRtl == 1) ? 1 : 0);
2219*b1cdbd2cSJim Jagielski 	}
2220*b1cdbd2cSJim Jagielski
2221*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.cpp	2010-06-21 12:55:34.000000000 +0630
2222*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.cpp	2010-06-21 13:16:59.000000000 +0630
2223*b1cdbd2cSJim Jagielski@@ -16,8 +16,9 @@
2224*b1cdbd2cSJim Jagielski //:>	Include files
2225*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2226*b1cdbd2cSJim Jagielski //#include "main.h" // This is used by clients, so main.h is not available
2227*b1cdbd2cSJim Jagielski-
2228*b1cdbd2cSJim Jagielski+#ifdef _MSC_VER
2229*b1cdbd2cSJim Jagielski #pragma hdrstop
2230*b1cdbd2cSJim Jagielski+#endif
2231*b1cdbd2cSJim Jagielski // any other headers (not precompiled)
2232*b1cdbd2cSJim Jagielski #include "GrClient.h"
2233*b1cdbd2cSJim Jagielski #include "ITextSource.h"
2234*b1cdbd2cSJim Jagielski@@ -31,9 +32,6 @@
2235*b1cdbd2cSJim Jagielski #include <string>
2236*b1cdbd2cSJim Jagielski #endif
2237*b1cdbd2cSJim Jagielski
2238*b1cdbd2cSJim Jagielski-#undef THIS_FILE
2239*b1cdbd2cSJim Jagielski-DEFINE_THIS_FILE
2240*b1cdbd2cSJim Jagielski-
2241*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2242*b1cdbd2cSJim Jagielski //:>	Global constants
2243*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2244*b1cdbd2cSJim Jagielski@@ -327,9 +325,9 @@
2245*b1cdbd2cSJim Jagielski 					&dxStretchAchieved);
2246*b1cdbd2cSJim Jagielski 				for (int iiiGlyph = 0; iiiGlyph < cStretchable; iiiGlyph++)
2247*b1cdbd2cSJim Jagielski 				{
2248*b1cdbd2cSJim Jagielski-					iiGlyph = viiGlyphsRem[iiiGlyph];
2249*b1cdbd2cSJim Jagielski-					vdxStretchLeft[iiGlyph] = vdxStretchRem[iiiGlyph];
2250*b1cdbd2cSJim Jagielski-					vdxWidth[iiGlyph] = vdxWidthRem[iiiGlyph];
2251*b1cdbd2cSJim Jagielski+					int ivGlyph = viiGlyphsRem[iiiGlyph];
2252*b1cdbd2cSJim Jagielski+					vdxStretchLeft[ivGlyph] = vdxStretchRem[iiiGlyph];
2253*b1cdbd2cSJim Jagielski+					vdxWidth[ivGlyph] = vdxWidthRem[iiiGlyph];
2254*b1cdbd2cSJim Jagielski 				}
2255*b1cdbd2cSJim Jagielski 			}
2256*b1cdbd2cSJim Jagielski 			else
2257*b1cdbd2cSJim Jagielski@@ -366,12 +364,12 @@
2258*b1cdbd2cSJim Jagielski 	{
2259*b1cdbd2cSJim Jagielski #ifdef WIN32
2260*b1cdbd2cSJim Jagielski 		wchar_t rgchw[20];
2261*b1cdbd2cSJim Jagielski-		std::fill_n(rgchw, 20, 0);
2262*b1cdbd2cSJim Jagielski+		std::fill_n(rgchw, 20, L'\0');
2263*b1cdbd2cSJim Jagielski 		_itow(dxStretchNeeded - dxStretchAchieved, rgchw, 10);
2264*b1cdbd2cSJim Jagielski 		std::wstring strTmp(L"justification failed by ");
2265*b1cdbd2cSJim Jagielski 		strTmp += rgchw;
2266*b1cdbd2cSJim Jagielski 		strTmp += L" units (width needed = ";
2267*b1cdbd2cSJim Jagielski-		std::fill_n(rgchw, 10, 0);
2268*b1cdbd2cSJim Jagielski+		std::fill_n(rgchw, 10, L'\0');
2269*b1cdbd2cSJim Jagielski 		_itow(dxDesiredWidth, rgchw, 10);
2270*b1cdbd2cSJim Jagielski 		strTmp += rgchw;
2271*b1cdbd2cSJim Jagielski 		strTmp += L")\n";
2272*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.h	2009-01-22 05:06:42.000000000 +0630
2273*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/GrJustifier.h	2010-06-21 13:16:49.000000000 +0630
2274*b1cdbd2cSJim Jagielski@@ -11,7 +11,9 @@
2275*b1cdbd2cSJim Jagielski Description:
2276*b1cdbd2cSJim Jagielski 	A default justification agent for Graphite.
2277*b1cdbd2cSJim Jagielski -------------------------------------------------------------------------------*//*:End Ignore*/
2278*b1cdbd2cSJim Jagielski+#ifdef _MSC_VER
2279*b1cdbd2cSJim Jagielski #pragma once
2280*b1cdbd2cSJim Jagielski+#endif
2281*b1cdbd2cSJim Jagielski #ifndef GRJUSTIFIER_INCLUDED
2282*b1cdbd2cSJim Jagielski #define GRJUSTIFIER_INCLUDED
2283*b1cdbd2cSJim Jagielski
2284*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.h	2010-06-21 12:55:34.000000000 +0630
2285*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.h	2010-06-21 13:18:12.000000000 +0630
2286*b1cdbd2cSJim Jagielski@@ -11,7 +11,9 @@
2287*b1cdbd2cSJim Jagielski Description:
2288*b1cdbd2cSJim Jagielski 	A simple text source that shows how to use this interface within Graphite.
2289*b1cdbd2cSJim Jagielski -------------------------------------------------------------------------------*//*:End Ignore*/
2290*b1cdbd2cSJim Jagielski+#ifdef _MSC_VER
2291*b1cdbd2cSJim Jagielski #pragma once
2292*b1cdbd2cSJim Jagielski+#endif
2293*b1cdbd2cSJim Jagielski #ifndef GRTXTSRC_INCLUDED
2294*b1cdbd2cSJim Jagielski #define GRTXTSRC_INCLUDED
2295*b1cdbd2cSJim Jagielski
2296*b1cdbd2cSJim Jagielski
2297*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.cpp	2010-06-21 12:55:34.000000000 +0630
2298*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/test/RegressionTest/SimpleTextSrc.cpp	2010-06-21 13:18:24.000000000 +0630
2299*b1cdbd2cSJim Jagielski@@ -15,7 +15,9 @@
2300*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2301*b1cdbd2cSJim Jagielski //:>	Include files
2302*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2303*b1cdbd2cSJim Jagielski+#ifdef _MSC_VER
2304*b1cdbd2cSJim Jagielski #pragma hdrstop
2305*b1cdbd2cSJim Jagielski+#endif
2306*b1cdbd2cSJim Jagielski // any other headers (not precompiled)
2307*b1cdbd2cSJim Jagielski
2308*b1cdbd2cSJim Jagielski #include "GrClient.h"
2309*b1cdbd2cSJim Jagielski@@ -23,9 +25,6 @@
2310*b1cdbd2cSJim Jagielski #include "ITextSource.h"
2311*b1cdbd2cSJim Jagielski #include "SimpleTextSrc.h"
2312*b1cdbd2cSJim Jagielski
2313*b1cdbd2cSJim Jagielski-#undef THIS_FILE
2314*b1cdbd2cSJim Jagielski-DEFINE_THIS_FILE
2315*b1cdbd2cSJim Jagielski-
2316*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2317*b1cdbd2cSJim Jagielski //:>	Initialization and destruction
2318*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2319*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/engine/src/segment/MemoryUsage.cpp	2009-01-22 05:06:42.000000000 +0630
2320*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/MemoryUsage.cpp	2010-06-21 13:36:36.000000000 +0630
2321*b1cdbd2cSJim Jagielski@@ -11,10 +11,10 @@
2322*b1cdbd2cSJim Jagielski Description:
2323*b1cdbd2cSJim Jagielski     Calculates memory usage for the engine and segments.
2324*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
2325*b1cdbd2cSJim Jagielski-
2326*b1cdbd2cSJim Jagielski+#ifdef _MSC_VER
2327*b1cdbd2cSJim Jagielski #pragma warning(disable: 4244)	// conversion from wchar_t to char
2328*b1cdbd2cSJim Jagielski #pragma warning(disable: 4702)	// unreachable code
2329*b1cdbd2cSJim Jagielski-
2330*b1cdbd2cSJim Jagielski+#endif
2331*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2332*b1cdbd2cSJim Jagielski //:>	Include files
2333*b1cdbd2cSJim Jagielski //:>********************************************************************************************
2334*b1cdbd2cSJim Jagielski@@ -54,8 +54,6 @@
2335*b1cdbd2cSJim Jagielski #ifdef _MSC_VER
2336*b1cdbd2cSJim Jagielski #pragma hdrstop
2337*b1cdbd2cSJim Jagielski #endif
2338*b1cdbd2cSJim Jagielski-#undef THIS_FILE
2339*b1cdbd2cSJim Jagielski-DEFINE_THIS_FILE
2340*b1cdbd2cSJim Jagielski
2341*b1cdbd2cSJim Jagielski //:End Ignore
2342*b1cdbd2cSJim Jagielski
2343*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotState.h	2010-06-23 19:52:56.429060400 +0700
2344*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/GrSlotState.h	2010-05-25 11:51:15.195066300 +0700
2345*b1cdbd2cSJim Jagielski@@ -48,7 +48,7 @@
2346*b1cdbd2cSJim Jagielski 	{
2347*b1cdbd2cSJim Jagielski 	}
2348*b1cdbd2cSJim Jagielski
2349*b1cdbd2cSJim Jagielski-	~GrSlotAbstract()
2350*b1cdbd2cSJim Jagielski+	virtual ~GrSlotAbstract()
2351*b1cdbd2cSJim Jagielski 	{
2352*b1cdbd2cSJim Jagielski 		// the table manager is responsible for destroying the contents of m_prgnVarLenBuf
2353*b1cdbd2cSJim Jagielski 	}
2354*b1cdbd2cSJim Jagielski@@ -231,7 +231,7 @@
2355*b1cdbd2cSJim Jagielski 		ZapCompositeMetrics();
2356*b1cdbd2cSJim Jagielski 	}
2357*b1cdbd2cSJim Jagielski
2358*b1cdbd2cSJim Jagielski-	~GrSlotState()
2359*b1cdbd2cSJim Jagielski+	virtual ~GrSlotState()
2360*b1cdbd2cSJim Jagielski 	{
2361*b1cdbd2cSJim Jagielski 	}
2362*b1cdbd2cSJim Jagielski
2363*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/include/graphite/Segment.h	2009-01-29 09:33:19.000000000 +0100
2364*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/include/graphite/Segment.h	2013-08-14 15:10:53.363864046 +0200
2365*b1cdbd2cSJim Jagielski@@ -64,7 +64,7 @@
2366*b1cdbd2cSJim Jagielski 	virtual ~Segment();
2367*b1cdbd2cSJim Jagielski
2368*b1cdbd2cSJim Jagielski 	// Basic copy constructor:
2369*b1cdbd2cSJim Jagielski-	Segment(Segment & seg);
2370*b1cdbd2cSJim Jagielski+	Segment( const Segment&);
2371*b1cdbd2cSJim Jagielski
2372*b1cdbd2cSJim Jagielski 	// For making modified copies of segments:
2373*b1cdbd2cSJim Jagielski 	static Segment * LineContextSegment(Segment & seg, bool fStartLine, bool fEndLine);
2374*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/engine/src/segment/Segment.cpp.bak	2010-06-23 19:59:54.611660400 +0700
2375*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/src/segment/Segment.cpp	2010-06-23 21:30:16.335460400 +0700
2376*b1cdbd2cSJim Jagielski@@ -246,6 +246,8 @@
2377*b1cdbd2cSJim Jagielski
2378*b1cdbd2cSJim Jagielski 	m_dxsVisibleWidth = -1;
2379*b1cdbd2cSJim Jagielski 	m_dxsTotalWidth = -1;
2380*b1cdbd2cSJim Jagielski+	m_ichwAssocsMin = 0;
2381*b1cdbd2cSJim Jagielski+	m_ichwAssocsLim = 0;
2382*b1cdbd2cSJim Jagielski
2383*b1cdbd2cSJim Jagielski //	m_psstrm = NULL;
2384*b1cdbd2cSJim Jagielski 	m_prgslout = NULL;
2385*b1cdbd2cSJim Jagielski@@ -435,7 +435,7 @@
2386*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
2387*b1cdbd2cSJim Jagielski 	Basic copy method.
2388*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
2389*b1cdbd2cSJim Jagielski-Segment::Segment(Segment & seg)
2390*b1cdbd2cSJim Jagielski+Segment::Segment( const Segment& seg)
2391*b1cdbd2cSJim Jagielski {
2392*b1cdbd2cSJim Jagielski 	int islout;
2393*b1cdbd2cSJim Jagielski
2394*b1cdbd2cSJim Jagielski@@ -2988,9 +2988,10 @@
2395*b1cdbd2cSJim Jagielski 	return kresOk;
2396*b1cdbd2cSJim Jagielski }
2397*b1cdbd2cSJim Jagielski
2398*b1cdbd2cSJim Jagielski-
2399*b1cdbd2cSJim Jagielski+#ifdef __GNUC__
2400*b1cdbd2cSJim Jagielski // suppress GCC 4.3 warning for optimized min()/max() when called with (ich, ich+1) or similar
2401*b1cdbd2cSJim Jagielski #pragma GCC diagnostic ignored "-Wstrict-overflow"
2402*b1cdbd2cSJim Jagielski+#endif
2403*b1cdbd2cSJim Jagielski
2404*b1cdbd2cSJim Jagielski /*----------------------------------------------------------------------------------------------
2405*b1cdbd2cSJim Jagielski 	Merge the given characters into the same Uniscribe cluster. This means merging any
2406*b1cdbd2cSJim Jagielski--- misc/build/silgraphite-2.3.1/wrappers/win32/win32_dll.cpp.bak	2008-05-09 18:10:30.000000000 +0700
2407*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/wrappers/win32/win32_dll.cpp	2010-05-10 15:46:54.291818000 +0700
2408*b1cdbd2cSJim Jagielski@@ -14,7 +14,7 @@
2409*b1cdbd2cSJim Jagielski 	DllMain. This is the main DLL entry point for a non-MFC DLL. For an MFC DLL, DllMain is
2410*b1cdbd2cSJim Jagielski 		in DllModul.cpp. Both DllMains call ModuleEntry::DllMain.
2411*b1cdbd2cSJim Jagielski ----------------------------------------------------------------------------------------------*/
2412*b1cdbd2cSJim Jagielski-extern "C" BOOL WINAPI DllMain(HMODULE hmod, DWORD dwReason, PVOID pvReserved)
2413*b1cdbd2cSJim Jagielski+extern "C" BOOL WINAPI DllMain(HMODULE hmod, DWORD dwReason, PVOID /*pvReserved*/)
2414*b1cdbd2cSJim Jagielski {
2415*b1cdbd2cSJim Jagielski 	bool fRet = true;
2416*b1cdbd2cSJim Jagielski
2417*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/include/graphite/GrFeature.h		2009-01-21 17:36:40.000000000 -0500
2418*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/include/graphite/GrFeature.h	2013-01-15 15:38:54.000000000 -0500
2419*b1cdbd2cSJim Jagielski@@ -21,6 +21,10 @@
2420*b1cdbd2cSJim Jagielski
2421*b1cdbd2cSJim Jagielski //:End Ignore
2422*b1cdbd2cSJim Jagielski
2423*b1cdbd2cSJim Jagielski+#ifdef __FreeBSD__
2424*b1cdbd2cSJim Jagielski+#define wstring basic_string<wchar_t> //quick dirty hack for not finding _STL::wstring
2425*b1cdbd2cSJim Jagielski+#endif
2426*b1cdbd2cSJim Jagielski+
2427*b1cdbd2cSJim Jagielski #include "GrAppData.h"
2428*b1cdbd2cSJim Jagielski
2429*b1cdbd2cSJim Jagielski namespace gr
2430*b1cdbd2cSJim Jagielski--- misc/silgraphite-2.3.1/engine/include/graphite/SegmentAux.h	Thu Jan 22 00:36:40 2009
2431*b1cdbd2cSJim Jagielski+++ misc/build/silgraphite-2.3.1/engine/include/graphite/SegmentAux.h	Sat Aug 22 19:36:32 2009
2432*b1cdbd2cSJim Jagielski@@ -232,8 +232,12 @@
2433*b1cdbd2cSJim Jagielski protected:
2434*b1cdbd2cSJim Jagielski 	// Constructor that includes output-slot mapping list, used for non-contiguous lists:
2435*b1cdbd2cSJim Jagielski 	GlyphSetIterator(Segment & seg, size_t islout, RcVector * qvislout)
2436*b1cdbd2cSJim Jagielski-		: m_pseg(&seg), m_vit(qvislout->Vector().begin() + islout)
2437*b1cdbd2cSJim Jagielski+		: m_pseg(&seg), m_vit(qvislout->Vector().begin())
2438*b1cdbd2cSJim Jagielski 	{
2439*b1cdbd2cSJim Jagielski+		if( islout < qvislout->Vector().size())
2440*b1cdbd2cSJim Jagielski+			m_vit += islout;
2441*b1cdbd2cSJim Jagielski+		else
2442*b1cdbd2cSJim Jagielski+			m_vit = qvislout->Vector().end();
2443*b1cdbd2cSJim Jagielski 		m_qvislout = qvislout;
2444*b1cdbd2cSJim Jagielski 		m_qvislout->IncRefCount();
2445*b1cdbd2cSJim Jagielski 	}
2446*b1cdbd2cSJim Jagielski@@ -289,7 +293,7 @@
2447*b1cdbd2cSJim Jagielski
2448*b1cdbd2cSJim Jagielski 	// Relational operators.
2449*b1cdbd2cSJim Jagielski   	// Forward iterator requirements
2450*b1cdbd2cSJim Jagielski-	bool operator==(const GlyphSetIterator & rhs) const throw()	{ return m_vit == rhs.m_vit; }
2451*b1cdbd2cSJim Jagielski+	bool operator==(const GlyphSetIterator & rhs) const throw()	{ return (m_qvislout == NULL) || (m_vit == rhs.m_vit); }
2452*b1cdbd2cSJim Jagielski 	bool operator!=(const GlyphSetIterator & rhs) const throw()	{ return !(*this == rhs); }
2453*b1cdbd2cSJim Jagielski
2454*b1cdbd2cSJim Jagielski 	// Random access iterator requirements
2455