Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

198 linhas
7.7 KiB

  1. unit ultsPostProcessor;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils,
  6. ultsTypes, utsTextSuite;
  7. function ltsPostProcessorAddRange (const aHandle: TltsPostProcessorHandle; const aUsage: TtsCharRangeUsage; const aStart, aStop: WideChar): TltsErrorCode; stdcall;
  8. function ltsPostProcessorAddChars (const aHandle: TltsPostProcessorHandle; const aUsage: TtsCharRangeUsage; const aChars: PWideChar): TltsErrorCode; stdcall;
  9. function ltsPostProcessorClearRanges (const aHandle: TltsPostProcessorHandle): TltsErrorCode; stdcall;
  10. function ltsPostProcessorFillColorCreate (const aContext: TltsContextHandle; const aColor: TtsColor4f;
  11. const aModes: TtsImageModes; const aChannels: TtsColorChannels): TltsPostProcessorHandle; stdcall;
  12. function ltsPostProcessorFillPatterCreate (const aContext: TltsContextHandle; const aPattern: TltsImageHandle; const aOwnsPatter: Boolean;
  13. const aPosition: TtsPosition; const aModes: TtsImageModes; const aChannels: TtsColorChannels): TltsPostProcessorHandle; stdcall;
  14. function ltsPostProcessorBorderCreate (const aContext: TltsContextHandle; const aWidth, aStrength: Single;
  15. const aColor: TtsColor4f; const aKeepSize: Boolean): TltsPostProcessorHandle; stdcall;
  16. function ltsPostProcessorShadowCreate (const aContext: TltsContextHandle; const aRadius, aStrength: Single;
  17. const aOffset: TtsPosition; const aColor: TtsColor4f): TltsPostProcessorHandle; stdcall;
  18. function ltsPostProcessorDestroy (const aHandle: TltsPostProcessorHandle): TltsErrorCode; stdcall;
  19. implementation
  20. uses
  21. ultsUtils;
  22. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  23. //ltsPostProcessor//////////////////////////////////////////////////////////////////////////////////////////////////////
  24. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  25. function ltsPostProcessorAddRange(const aHandle: TltsPostProcessorHandle; const aUsage: TtsCharRangeUsage; const aStart, aStop: WideChar): TltsErrorCode; stdcall;
  26. var
  27. pp: TtsPostProcessor;
  28. begin
  29. try
  30. result := ltsErrNone;
  31. if ValidateCharRangeUsage(aUsage) and CheckPostProcessorHandle(aHandle, TtsPostProcessor, pp)
  32. then pp.AddRange(aUsage, aStart, aStop)
  33. else result := LastErrorCode;
  34. except
  35. on ex: Exception do begin
  36. SetLastError(ex);
  37. result := LastErrorCode;
  38. end;
  39. end;
  40. end;
  41. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  42. function ltsPostProcessorAddChars(const aHandle: TltsPostProcessorHandle; const aUsage: TtsCharRangeUsage; const aChars: PWideChar): TltsErrorCode; stdcall;
  43. var
  44. pp: TtsPostProcessor;
  45. begin
  46. try
  47. result := ltsErrNone;
  48. if ValidateCharRangeUsage(aUsage) and CheckPostProcessorHandle(aHandle, TtsPostProcessor, pp)
  49. then pp.AddChars(aUsage, aChars)
  50. else result := LastErrorCode;
  51. except
  52. on ex: Exception do begin
  53. SetLastError(ex);
  54. result := LastErrorCode;
  55. end;
  56. end;
  57. end;
  58. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  59. function ltsPostProcessorClearRanges(const aHandle: TltsPostProcessorHandle): TltsErrorCode; stdcall;
  60. var
  61. pp: TtsPostProcessor;
  62. begin
  63. try
  64. result := ltsErrNone;
  65. if CheckPostProcessorHandle(aHandle, TtsPostProcessor, pp)
  66. then pp.ClearRanges
  67. else result := LastErrorCode;
  68. except
  69. on ex: Exception do begin
  70. SetLastError(ex);
  71. result := LastErrorCode;
  72. end;
  73. end;
  74. end;
  75. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  76. function ltsPostProcessorFillColorCreate(const aContext: TltsContextHandle; const aColor: TtsColor4f; const aModes: TtsImageModes; const aChannels: TtsColorChannels): TltsPostProcessorHandle; stdcall;
  77. var
  78. c: TtsContext;
  79. pp: TtsPostProcessor;
  80. begin
  81. try
  82. result := nil;
  83. if CheckContextHandle(aContext, c) then begin
  84. pp := TtsPostProcessorFillColor.Create(c, aColor, aModes, aChannels);
  85. AddReference(ltsObjTypePostProcessor, pp);
  86. result := pp;
  87. end;
  88. except
  89. on ex: Exception do begin
  90. SetLastError(ex);
  91. result := nil;
  92. end;
  93. end;
  94. end;
  95. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  96. function ltsPostProcessorFillPatterCreate(const aContext: TltsContextHandle; const aPattern: TltsImageHandle; const aOwnsPatter: Boolean; const aPosition: TtsPosition; const aModes: TtsImageModes; const aChannels: TtsColorChannels): TltsPostProcessorHandle; stdcall;
  97. var
  98. c: TtsContext;
  99. img: TtsImage;
  100. pp: TtsPostProcessor;
  101. begin
  102. try
  103. result := nil;
  104. img := nil;
  105. if CheckContextHandle(aContext, c) and CheckImageHandle(aPattern, img) then begin
  106. pp := TtsPostProcessorFillPattern.Create(c, img, aOwnsPatter, aPosition, aModes, aChannels);
  107. AddReference(ltsObjTypePostProcessor, pp);
  108. result := pp;
  109. end;
  110. except
  111. on ex: Exception do begin
  112. SetLastError(ex);
  113. result := nil;
  114. end;
  115. end;
  116. end;
  117. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  118. function ltsPostProcessorBorderCreate(const aContext: TltsContextHandle; const aWidth, aStrength: Single; const aColor: TtsColor4f; const aKeepSize: Boolean): TltsPostProcessorHandle; stdcall;
  119. var
  120. c: TtsContext;
  121. pp: TtsPostProcessor;
  122. begin
  123. try
  124. result := nil;
  125. if CheckContextHandle(aContext, c) then begin
  126. pp := TtsPostProcessorBorder.Create(c, aWidth, aStrength, aColor, aKeepSize);
  127. AddReference(ltsObjTypePostProcessor, pp);
  128. result := pp;
  129. end;
  130. except
  131. on ex: Exception do begin
  132. SetLastError(ex);
  133. result := nil;
  134. end;
  135. end;
  136. end;
  137. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  138. function ltsPostProcessorShadowCreate(const aContext: TltsContextHandle; const aRadius, aStrength: Single; const aOffset: TtsPosition; const aColor: TtsColor4f): TltsPostProcessorHandle; stdcall;
  139. var
  140. c: TtsContext;
  141. pp: TtsPostProcessor;
  142. begin
  143. try
  144. result := nil;
  145. if CheckContextHandle(aContext, c) then begin
  146. pp := TtsPostProcessorShadow.Create(c, aRadius, aStrength, aOffset, aColor);
  147. AddReference(ltsObjTypePostProcessor, pp);
  148. result := pp;
  149. end;
  150. except
  151. on ex: Exception do begin
  152. SetLastError(ex);
  153. result := nil;
  154. end;
  155. end;
  156. end;
  157. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  158. function ltsPostProcessorDestroy(const aHandle: TltsPostProcessorHandle): TltsErrorCode; stdcall;
  159. var
  160. pp: TtsPostProcessor;
  161. begin
  162. try
  163. result := ltsErrNone;
  164. if CheckPostProcessorHandle(aHandle, TtsPostProcessor, pp) then begin
  165. if (pp is TtsPostProcessorFillPattern) then with (pp as TtsPostProcessorFillPattern) do begin
  166. if OwnsPattern then
  167. DelReference(ltsObjTypeImage, Pattern);
  168. end;
  169. DelReference(ltsObjTypePostProcessor, pp);
  170. FreeAndNil(pp);
  171. end else
  172. result := LastErrorCode;
  173. except
  174. on ex: Exception do begin
  175. SetLastError(ex);
  176. result := LastErrorCode;
  177. end;
  178. end;
  179. end;
  180. end.