comparison dynamin/painting/windows_text_layout.d @ 106:acdbb30fee7e

Port to D2. Most of the effort was dealing with immutable and const.
author Jordan Miner <jminer7@gmail.com>
date Mon, 17 Dec 2012 23:41:50 -0600
parents 73060bc3f004
children
comparison
equal deleted inserted replaced
105:97997a544ac0 106:acdbb30fee7e
99 CjkIdeographs = getUniscribeScript("丛东丝"); 99 CjkIdeographs = getUniscribeScript("丛东丝");
100 CjkSymbols = getUniscribeScript("、〜㈬"); 100 CjkSymbols = getUniscribeScript("、〜㈬");
101 KoreanHangul = getUniscribeScript("갠흯㉡"); 101 KoreanHangul = getUniscribeScript("갠흯㉡");
102 } 102 }
103 // returns the Uniscribe script number (SCRIPT_ANALYSIS.eScript) from the specified sample text 103 // returns the Uniscribe script number (SCRIPT_ANALYSIS.eScript) from the specified sample text
104 static int getUniscribeScript(wchar[] sample) { 104 static int getUniscribeScript(const(wchar)[] sample) {
105 SCRIPT_ITEM[5] items; 105 SCRIPT_ITEM[5] items;
106 int itemsProcessed; 106 int itemsProcessed;
107 HRESULT r = ScriptItemize(sample.ptr, 107 HRESULT r = ScriptItemize(sample.ptr,
108 sample.length, 108 sample.length,
109 items.length-1, 109 items.length-1,
115 assert(itemsProcessed == 1); 115 assert(itemsProcessed == 1);
116 return items[0].a.eScript.get(); 116 return items[0].a.eScript.get();
117 } 117 }
118 118
119 // adds fallback fonts to the specified fallbacks array 119 // adds fallback fonts to the specified fallbacks array
120 void getFontFallbacks(int script, wchar[][] fallbacks) { 120 void getFontFallbacks(int script, const(wchar)[][] fallbacks) {
121 int i = 0; 121 int i = 0;
122 void addFallback(wchar[] str) { 122 void addFallback(const(wchar)[] str) {
123 fallbacks[i++] = str; 123 fallbacks[i++] = str;
124 } 124 }
125 if(script == Latin || script == Greek || script == Cyrillic) 125 if(script == Latin || script == Greek || script == Cyrillic)
126 addFallback("Times New Roman"); 126 addFallback("Times New Roman");
127 else if(script == Hebrew || script == Arabic) 127 else if(script == Hebrew || script == Arabic)
328 uint wstart = charToWcharIndex(start); 328 uint wstart = charToWcharIndex(start);
329 uint wend = charToWcharIndex(start+length); 329 uint wend = charToWcharIndex(start+length);
330 if(items[itemIndex+1].iCharPos == wstart) 330 if(items[itemIndex+1].iCharPos == wstart)
331 itemIndex++; 331 itemIndex++;
332 332
333 levels.add(items[itemIndex].a.s.uBidiLevel.get()); 333 levels.add(cast(BYTE)items[itemIndex].a.s.uBidiLevel.get());
334 334
335 cairo_matrix_t ctm; 335 cairo_matrix_t ctm;
336 cairo_get_matrix(cr, &ctm); 336 cairo_get_matrix(cr, &ctm);
337 cairo_scaled_font_t* font = getScaledFont(format.fontFamily, 337 cairo_scaled_font_t* font = getScaledFont(format.fontFamily,
338 format.fontSize, 338 format.fontSize,