Mercurial > projects > dynamin
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, |