/binding/win32/gdiplusstringformat.d

http://github.com/wilkie/djehuty · D · 297 lines · 232 code · 42 blank · 23 comment · 5 complexity · 882cd2a960b68b55bd8a9d01bfdbca67 MD5 · raw file

  1. /*
  2. * gdiplusstringformat.d
  3. *
  4. * This module implements GdiPlusStringFormat.h for D. The original
  5. * copyright info is given below.
  6. *
  7. * Author: Dave Wilkinson
  8. * Originated: November 25th, 2009
  9. *
  10. */
  11. module binding.win32.gdiplusstringformat;
  12. import binding.win32.windef;
  13. import binding.win32.winbase;
  14. import binding.win32.winnt;
  15. import binding.win32.wingdi;
  16. import binding.win32.guiddef;
  17. import binding.win32.gdiplusbase;
  18. import binding.win32.gdiplustypes;
  19. import binding.win32.gdiplusenums;
  20. import binding.win32.gdipluspixelformats;
  21. import binding.win32.gdiplusgpstubs;
  22. import binding.win32.gdiplusmetaheader;
  23. import binding.win32.gdipluspixelformats;
  24. import binding.win32.gdipluscolor;
  25. import binding.win32.gdipluscolormatrix;
  26. import binding.win32.gdiplusflat;
  27. import binding.win32.gdiplusimaging;
  28. import binding.win32.gdiplusbitmap;
  29. import binding.win32.gdiplusimageattributes;
  30. import binding.win32.gdiplusmatrix;
  31. /**************************************************************************\
  32. *
  33. * Copyright (c) 1998-2001, Microsoft Corp. All Rights Reserved.
  34. *
  35. * Module Name:
  36. *
  37. * GdiplusStringFormat.h
  38. *
  39. * Abstract:
  40. *
  41. * GDI+ StringFormat class
  42. *
  43. \**************************************************************************/
  44. class StringFormat : GdiplusBase {
  45. this(
  46. in INT formatFlags = 0,
  47. in LANGID language = LANG_NEUTRAL) {
  48. nativeFormat = null;
  49. lastError = GdipCreateStringFormat(
  50. formatFlags,
  51. language,
  52. &nativeFormat
  53. );
  54. }
  55. static StringFormat GenericDefault() {
  56. StringFormat genericDefaultStringFormat = new StringFormat();
  57. genericDefaultStringFormat.lastError =
  58. GdipStringFormatGetGenericDefault(
  59. &(genericDefaultStringFormat.nativeFormat)
  60. );
  61. return genericDefaultStringFormat;
  62. }
  63. static StringFormat GenericTypographic() {
  64. StringFormat genericTypographicStringFormat = new StringFormat();
  65. genericTypographicStringFormat.lastError =
  66. GdipStringFormatGetGenericTypographic(
  67. &genericTypographicStringFormat.nativeFormat
  68. );
  69. return genericTypographicStringFormat;
  70. }
  71. this(in StringFormat format) {
  72. nativeFormat = null;
  73. lastError = GdipCloneStringFormat(
  74. format ? format.nativeFormat : null,
  75. &nativeFormat
  76. );
  77. }
  78. StringFormat Clone() {
  79. GpStringFormat *clonedStringFormat = null;
  80. lastError = GdipCloneStringFormat(
  81. nativeFormat,
  82. &clonedStringFormat
  83. );
  84. if (lastError == Status.Ok)
  85. return new StringFormat(clonedStringFormat, lastError);
  86. else
  87. return null;
  88. }
  89. alias Clone dup;
  90. ~this() {
  91. GdipDeleteStringFormat(nativeFormat);
  92. }
  93. Status SetFormatFlags(in INT flags) {
  94. return SetStatus(GdipSetStringFormatFlags(
  95. nativeFormat,
  96. flags
  97. ));
  98. }
  99. INT GetFormatFlags() {
  100. INT flags;
  101. SetStatus(GdipGetStringFormatFlags(nativeFormat, &flags));
  102. return flags;
  103. }
  104. Status SetAlignment(in StringAlignment _align) {
  105. return SetStatus(GdipSetStringFormatAlign(
  106. nativeFormat,
  107. _align
  108. ));
  109. }
  110. StringAlignment GetAlignment() {
  111. StringAlignment alignment;
  112. SetStatus(GdipGetStringFormatAlign(
  113. nativeFormat,
  114. &alignment
  115. ));
  116. return alignment;
  117. }
  118. Status SetLineAlignment(in StringAlignment _align) {
  119. return SetStatus(GdipSetStringFormatLineAlign(
  120. nativeFormat,
  121. _align
  122. ));
  123. }
  124. StringAlignment GetLineAlignment() {
  125. StringAlignment alignment;
  126. SetStatus(GdipGetStringFormatLineAlign(
  127. nativeFormat,
  128. &alignment
  129. ));
  130. return alignment;
  131. }
  132. Status SetHotkeyPrefix(in HotkeyPrefix hotkeyPrefix) {
  133. return SetStatus(GdipSetStringFormatHotkeyPrefix(
  134. nativeFormat,
  135. cast(INT)hotkeyPrefix
  136. ));
  137. }
  138. HotkeyPrefix GetHotkeyPrefix() {
  139. HotkeyPrefix hotkeyPrefix;
  140. SetStatus(GdipGetStringFormatHotkeyPrefix(
  141. nativeFormat,
  142. cast(INT*)&hotkeyPrefix
  143. ));
  144. return hotkeyPrefix;
  145. }
  146. Status SetTabStops(
  147. in REAL firstTabOffset,
  148. in INT count,
  149. in REAL *tabStops
  150. ) {
  151. return SetStatus(GdipSetStringFormatTabStops(
  152. nativeFormat,
  153. firstTabOffset,
  154. count,
  155. tabStops
  156. ));
  157. }
  158. INT GetTabStopCount() {
  159. INT count;
  160. SetStatus(GdipGetStringFormatTabStopCount(nativeFormat, &count));
  161. return count;
  162. }
  163. Status GetTabStops(
  164. in INT count,
  165. REAL *firstTabOffset,
  166. REAL *tabStops
  167. ) {
  168. return SetStatus(GdipGetStringFormatTabStops(
  169. nativeFormat,
  170. count,
  171. firstTabOffset,
  172. tabStops
  173. ));
  174. }
  175. Status SetDigitSubstitution(
  176. in LANGID language,
  177. in StringDigitSubstitute substitute
  178. ) {
  179. return SetStatus(GdipSetStringFormatDigitSubstitution(
  180. nativeFormat,
  181. language,
  182. substitute
  183. ));
  184. }
  185. LANGID GetDigitSubstitutionLanguage() {
  186. LANGID language;
  187. SetStatus(GdipGetStringFormatDigitSubstitution(
  188. nativeFormat,
  189. &language,
  190. null
  191. ));
  192. return language;
  193. }
  194. StringDigitSubstitute GetDigitSubstitutionMethod() {
  195. StringDigitSubstitute substitute;
  196. SetStatus(GdipGetStringFormatDigitSubstitution(
  197. nativeFormat,
  198. null,
  199. &substitute
  200. ));
  201. return substitute;
  202. }
  203. Status SetTrimming(in StringTrimming trimming) {
  204. return SetStatus(GdipSetStringFormatTrimming(
  205. nativeFormat,
  206. trimming
  207. ));
  208. }
  209. StringTrimming GetTrimming() {
  210. StringTrimming trimming;
  211. SetStatus(GdipGetStringFormatTrimming(
  212. nativeFormat,
  213. &trimming
  214. ));
  215. return trimming;
  216. }
  217. Status SetMeasurableCharacterRanges(
  218. in INT rangeCount,
  219. in CharacterRange[] ranges
  220. ) {
  221. return SetStatus(GdipSetStringFormatMeasurableCharacterRanges(
  222. nativeFormat,
  223. rangeCount,
  224. ranges.ptr
  225. ));
  226. }
  227. INT GetMeasurableCharacterRangeCount() {
  228. INT count;
  229. SetStatus(GdipGetStringFormatMeasurableCharacterRangeCount(
  230. nativeFormat,
  231. &count
  232. ));
  233. return count;
  234. }
  235. Status GetLastStatus() {
  236. Status lastStatus = lastError;
  237. lastError = Status.Ok;
  238. return lastStatus;
  239. }
  240. protected:
  241. Status SetStatus(GpStatus newStatus) {
  242. if (newStatus == Status.Ok) {
  243. return Status.Ok;
  244. }
  245. else {
  246. return lastError = newStatus;
  247. }
  248. }
  249. package this(GpStringFormat* clonedStringFormat, Status status) {
  250. lastError = status;
  251. nativeFormat = clonedStringFormat;
  252. }
  253. package GpStringFormat *nativeFormat;
  254. package Status lastError;
  255. }