GdiplusStringFormat

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

GdiplusStringFormat

Steve Alan Waring
Hi Andy and Blair,

I am not sure if this is the kind of feedback you are looking for at this
stage, but pressing on ... attached to this message are some instance
creation methods for GdiplusStringFormat that I find fairly handy.

gdiplus-sf.st ... a .st file-out of some additional instance creation loose
methods.
GdiplusStringFormatTest.cls ... a TestCase for these methods.

FWIW: Another method I use frequently is:

!GdiplusGraphics methodsFor!

fillRectangle: aRectangle color: aColor
 | brush |
 brush := GdiplusSolidBrush color: aColor asARGB.
 self fillRectangle: aRectangle brush: brush.
 brush free! !
!GdiplusGraphics categoriesFor: #fillRectangle:color:!filling!public! !

Steve
--
Steve Waring
[hidden email]


begin 666 GdiplusStringFormatTest.cls
M(D9I;&5D(&]U="!F<F]M($1O;'!H:6X@4VUA;&QT86QK(%A0(B$-"@T*1V1I
M<&QU<U1E<W1S('-U8F-L87-S.B C1V1I<&QU<U-T<FEN9T9O<FUA=%1E<W0-
M"@EI;G-T86YC959A<FEA8FQE3F%M97,Z("<G#0H)8VQA<W-687)I86)L94YA
M;65S.B G)PT*"7!O;VQ$:6-T:6]N87)I97,Z("<G#0H)8VQA<W-);G-T86YC
M959A<FEA8FQE3F%M97,Z("<G(0T*1V1I<&QU<U-T<FEN9T9O<FUA=%1E<W0@
M9W5I9#H@*$=5240@9G)O;5-T<FEN9SH@)WLU0D5&-C9$-RU%,D1%+30U034M
M.31%-"TT,T,X03@S-#=&-S%])RDA#0I'9&EP;'5S4W1R:6YG1F]R;6%T5&5S
M="!C;VUM96YT.B G)R$-"B%'9&EP;'5S4W1R:6YG1F]R;6%T5&5S="!C871E
M9V]R:65S1F]R0VQA<W,A56YC;&%S<VEF:65D(2 A#0HA1V1I<&QU<U-T<FEN
M9T9O<FUA=%1E<W0@;65T:&]D<T9O<B$-"@T*=&5A<D1O=VX-"@ES=7!E<B!T
M96%R1&]W;BX-"@EM;V1E;"!N;W1.:6P@:694<G5E.B!;;6]D96P@9G)E95TA
M#0H-"G1E<W1#96YT97)E9 T*"6UO9&5L(#H]($=D:7!L=7-3=')I;F=&;W)M
M870@8V5N=&5R960N#0H)<V5L9B!A<W-E<G0Z(&UO9&5L(&%L:6=N;65N=" ]
M(%-T<FEN9T%L:6=N;65N=$-E;G1E<BX-"@ES96QF(&%S<V5R=#H@;6]D96P@
M;&EN94%L:6=N;65N=" ](%-T<FEN9T%L:6=N;65N=$-E;G1E<B$-"@T*=&5S
M=$-E;G1E<D9A<@T*"6UO9&5L(#H]($=D:7!L=7-3=')I;F=&;W)M870@8V5N
M=&5R1F%R+@T*"7-E;&8@87-S97)T.B!M;V1E;"!A;&EG;FUE;G0@/2!3=')I
M;F=!;&EG;FUE;G1#96YT97(N#0H)<V5L9B!A<W-E<G0Z(&UO9&5L(&QI;F5!
M;&EG;FUE;G0@/2!3=')I;F=!;&EG;FUE;G1&87(A#0H-"G1E<W1#96YT97).
M96%R#0H);6]D96P@.CT@1V1I<&QU<U-T<FEN9T9O<FUA="!C96YT97).96%R
M+@T*"7-E;&8@87-S97)T.B!M;V1E;"!A;&EG;FUE;G0@/2!3=')I;F=!;&EG
M;FUE;G1#96YT97(N#0H)<V5L9B!A<W-E<G0Z(&UO9&5L(&QI;F5!;&EG;FUE
M;G0@/2!3=')I;F=!;&EG;FUE;G1.96%R(0T*#0IT97-T1F%R0V5N=&5R#0H)
M;6]D96P@.CT@1V1I<&QU<U-T<FEN9T9O<FUA="!F87)#96YT97(N#0H)<V5L
M9B!A<W-E<G0Z(&UO9&5L(&%L:6=N;65N=" ](%-T<FEN9T%L:6=N;65N=$9A
M<BX-"@ES96QF(&%S<V5R=#H@;6]D96P@;&EN94%L:6=N;65N=" ](%-T<FEN
M9T%L:6=N;65N=$-E;G1E<B$-"@T*=&5S=$9A<D9A<@T*"6UO9&5L(#H]($=D
M:7!L=7-3=')I;F=&;W)M870@9F%R1F%R+@T*"7-E;&8@87-S97)T.B!M;V1E
M;"!A;&EG;FUE;G0@/2!3=')I;F=!;&EG;FUE;G1&87(N#0H)<V5L9B!A<W-E
M<G0Z(&UO9&5L(&QI;F5!;&EG;FUE;G0@/2!3=')I;F=!;&EG;FUE;G1&87(A
M#0H-"G1E<W1&87).96%R#0H);6]D96P@.CT@1V1I<&QU<U-T<FEN9T9O<FUA
M="!F87).96%R+@T*"7-E;&8@87-S97)T.B!M;V1E;"!A;&EG;FUE;G0@/2!3
M=')I;F=!;&EG;FUE;G1&87(N#0H)<V5L9B!A<W-E<G0Z(&UO9&5L(&QI;F5!
M;&EG;FUE;G0@/2!3=')I;F=!;&EG;FUE;G1.96%R(0T*#0IT97-T3F5A<D-E
M;G1E<@T*"6UO9&5L(#H]($=D:7!L=7-3=')I;F=&;W)M870@;F5A<D-E;G1E
M<BX-"@ES96QF(&%S<V5R=#H@;6]D96P@86QI9VYM96YT(#T@4W1R:6YG06QI
M9VYM96YT3F5A<BX-"@ES96QF(&%S<V5R=#H@;6]D96P@;&EN94%L:6=N;65N
M=" ](%-T<FEN9T%L:6=N;65N=$-E;G1E<B$-"@T*=&5S=$YE87)&87(-"@EM
M;V1E;" Z/2!'9&EP;'5S4W1R:6YG1F]R;6%T(&YE87)&87(N#0H)<V5L9B!A
M<W-E<G0Z(&UO9&5L(&%L:6=N;65N=" ](%-T<FEN9T%L:6=N;65N=$YE87(N
M#0H)<V5L9B!A<W-E<G0Z(&UO9&5L(&QI;F5!;&EG;FUE;G0@/2!3=')I;F=!
M;&EG;FUE;G1&87(A#0H-"G1E<W1.96%R3F5A<@T*"6UO9&5L(#H]($=D:7!L
M=7-3=')I;F=&;W)M870@;F5A<DYE87(N#0H)<V5L9B!A<W-E<G0Z(&UO9&5L
M(&%L:6=N;65N=" ](%-T<FEN9T%L:6=N;65N=$YE87(N#0H)<V5L9B!A<W-E
M<G0Z(&UO9&5L(&QI;F5!;&EG;FUE;G0@/2!3=')I;F=!;&EG;FUE;G1.96%R
M(2 A#0HA1V1I<&QU<U-T<FEN9T9O<FUA=%1E<W0@8V%T96=O<FEE<T9O<CH@
M(W1E87)$;W=N(7!U8FQI8R%S971U<"$@(0T*(4=D:7!L=7-3=')I;F=&;W)M
M871497-T(&-A=&5G;W)I97-&;W(Z("-T97-T0V5N=&5R960A<'5B;&EC(75N
M:70@=&5S=',A("$-"B%'9&EP;'5S4W1R:6YG1F]R;6%T5&5S="!C871E9V]R
M:65S1F]R.B C=&5S=$-E;G1E<D9A<B%P=6)L:6,A=6YI="!T97-T<R$@(0T*
M(4=D:7!L=7-3=')I;F=&;W)M871497-T(&-A=&5G;W)I97-&;W(Z("-T97-T
M0V5N=&5R3F5A<B%P=6)L:6,A=6YI="!T97-T<R$@(0T*(4=D:7!L=7-3=')I
M;F=&;W)M871497-T(&-A=&5G;W)I97-&;W(Z("-T97-T1F%R0V5N=&5R(7!U
M8FQI8R%U;FET('1E<W1S(2 A#0HA1V1I<&QU<U-T<FEN9T9O<FUA=%1E<W0@
M8V%T96=O<FEE<T9O<CH@(W1E<W1&87)&87(A<'5B;&EC(75N:70@=&5S=',A
M("$-"B%'9&EP;'5S4W1R:6YG1F]R;6%T5&5S="!C871E9V]R:65S1F]R.B C
M=&5S=$9A<DYE87(A<'5B;&EC(75N:70@=&5S=',A("$-"B%'9&EP;'5S4W1R
M:6YG1F]R;6%T5&5S="!C871E9V]R:65S1F]R.B C=&5S=$YE87)#96YT97(A
M<'5B;&EC(75N:70@=&5S=',A("$-"B%'9&EP;'5S4W1R:6YG1F]R;6%T5&5S
M="!C871E9V]R:65S1F]R.B C=&5S=$YE87)&87(A<'5B;&EC(75N:70@=&5S
M=',A("$-"B%'9&EP;'5S4W1R:6YG1F]R;6%T5&5S="!C871E9V]R:65S1F]R
H.B C=&5S=$YE87).96%R(7!U8FQI8R%U;FET('1E<W1S(2 A#0H-"@``
`
end

begin 666 gdiplus-sf.st
M(4=D:7!L=7-3=')I;F=&;W)M870@8VQA<W,@;65T:&]D<T9O<B$-"@T*8V5N
M=&5R1F%R#0H)(D%N<W=E<B!A;B!I;G-T86YC92!O9B!T:&4@<F5C96EV97(@
M=VET:"!A;&EG;FUE;G0Z#0H)"4AO<F]Z;VYT86PZ(&-E;G1E<@T*"0E697)T
M:6-A;#H@9F%R(@T*#0H)7BAS96QF(&YE=RD-"@D)86QI9VYM96YT.B!3=')I
M;F=!;&EG;FUE;G1#96YT97([#0H)"6QI;F5!;&EG;FUE;G0Z(%-T<FEN9T%L
M:6=N;65N=$9A<CL-"@D)>6]U<G-E;&8A("$-"B%'9&EP;'5S4W1R:6YG1F]R
M;6%T(&-L87-S(&-A=&5G;W)I97-&;W(Z("-C96YT97)&87(A:6YS=&%N8V4@
M8W)E871I;VXA<'5B;&EC(2 A#0H-"B%'9&EP;'5S4W1R:6YG1F]R;6%T(&-L
M87-S(&UE=&AO9'-&;W(A#0H-"F-E;G1E<DYE87(-"@DB06YS=V5R(&%N(&EN
M<W1A;F-E(&]F('1H92!R96-E:79E<B!W:71H(&%L:6=N;65N=#H-"@D)2&]R
M;WIO;G1A;#H@8V5N=&5R#0H)"59E<G1I8V%L.B!N96%R(@T*#0H)7BAS96QF
M(&YE=RD-"@D)86QI9VYM96YT.B!3=')I;F=!;&EG;FUE;G1#96YT97([#0H)
M"6QI;F5!;&EG;FUE;G0Z(%-T<FEN9T%L:6=N;65N=$YE87([#0H)"7EO=7)S
M96QF(2 A#0HA1V1I<&QU<U-T<FEN9T9O<FUA="!C;&%S<R!C871E9V]R:65S
M1F]R.B C8V5N=&5R3F5A<B%I;G-T86YC92!C<F5A=&EO;B%P=6)L:6,A("$-
M"@T*(4=D:7!L=7-3=')I;F=&;W)M870@8VQA<W,@;65T:&]D<T9O<B$-"@T*
M9F%R0V5N=&5R#0H)(D%N<W=E<B!A;B!I;G-T86YC92!O9B!T:&4@<F5C96EV
M97(@=VET:"!A;&EG;FUE;G0Z#0H)"4AO<F]Z;VYT86PZ(&9A<@T*"0E697)T
M:6-A;#H@8V5N=&5R(@T*#0H)7BAS96QF(&YE=RD-"@D)86QI9VYM96YT.B!3
M=')I;F=!;&EG;FUE;G1&87([#0H)"6QI;F5!;&EG;FUE;G0Z(%-T<FEN9T%L
M:6=N;65N=$-E;G1E<CL-"@D)>6]U<G-E;&8A("$-"B%'9&EP;'5S4W1R:6YG
M1F]R;6%T(&-L87-S(&-A=&5G;W)I97-&;W(Z("-F87)#96YT97(A:6YS=&%N
M8V4@8W)E871I;VXA<'5B;&EC(2 A#0H-"B%'9&EP;'5S4W1R:6YG1F]R;6%T
M(&-L87-S(&UE=&AO9'-&;W(A#0H-"F9A<D9A<@T*"2)!;G-W97(@86X@:6YS
M=&%N8V4@;V8@=&AE(')E8V5I=F5R('=I=&@@86QI9VYM96YT.@T*"0E(;W)O
M>F]N=&%L.B!F87(-"@D)5F5R=&EC86PZ(&9A<B(-"@T*"5XH<V5L9B!N97<I
M#0H)"6%L:6=N;65N=#H@4W1R:6YG06QI9VYM96YT1F%R.PT*"0EL:6YE06QI
M9VYM96YT.B!3=')I;F=!;&EG;FUE;G1&87([#0H)"7EO=7)S96QF(2 A#0HA
M1V1I<&QU<U-T<FEN9T9O<FUA="!C;&%S<R!C871E9V]R:65S1F]R.B C9F%R
M1F%R(6EN<W1A;F-E(&-R96%T:6]N(7!U8FQI8R$@(0T*#0HA1V1I<&QU<U-T
M<FEN9T9O<FUA="!C;&%S<R!M971H;V1S1F]R(0T*#0IF87).96%R#0H)(D%N
M<W=E<B!A;B!I;G-T86YC92!O9B!T:&4@<F5C96EV97(@=VET:"!A;&EG;FUE
M;G0Z#0H)"4AO<F]Z;VYT86PZ(&9A<@T*"0E697)T:6-A;#H@;F5A<B(-"@T*
M"5XH<V5L9B!N97<I#0H)"6%L:6=N;65N=#H@4W1R:6YG06QI9VYM96YT1F%R
M.PT*"0EL:6YE06QI9VYM96YT.B!3=')I;F=!;&EG;FUE;G1.96%R.PT*"0EY
M;W5R<V5L9B$@(0T*(4=D:7!L=7-3=')I;F=&;W)M870@8VQA<W,@8V%T96=O
M<FEE<T9O<CH@(V9A<DYE87(A:6YS=&%N8V4@8W)E871I;VXA<'5B;&EC(2 A
M#0HA1V1I<&QU<U-T<FEN9T9O<FUA="!C;&%S<R!M971H;V1S1F]R(0T*#0IN
M96%R0V5N=&5R#0H)(D%N<W=E<B!A;B!I;G-T86YC92!O9B!T:&4@<F5C96EV
M97(@=VET:"!A;&EG;FUE;G0Z#0H)"4AO<F]Z;VYT86PZ(&YE87(-"@D)5F5R
M=&EC86PZ(&-E;G1E<B(-"@T*"5XH<V5L9B!N97<I#0H)"6%L:6=N;65N=#H@
M4W1R:6YG06QI9VYM96YT3F5A<CL-"@D);&EN94%L:6=N;65N=#H@4W1R:6YG
M06QI9VYM96YT0V5N=&5R.PT*"0EY;W5R<V5L9B$@(0T*(4=D:7!L=7-3=')I
M;F=&;W)M870@8VQA<W,@8V%T96=O<FEE<T9O<CH@(VYE87)#96YT97(A:6YS
M=&%N8V4@8W)E871I;VXA<'5B;&EC(2 A#0H-"B%'9&EP;'5S4W1R:6YG1F]R
M;6%T(&-L87-S(&UE=&AO9'-&;W(A#0H-"FYE87)&87(-"@DB06YS=V5R(&%N
M(&EN<W1A;F-E(&]F('1H92!R96-E:79E<B!W:71H(&%L:6=N;65N=#H-"@D)
M2&]R;WIO;G1A;#H@;F5A<@T*"0E697)T:6-A;#H@9F%R(@T*#0H)7BAS96QF
M(&YE=RD-"@D)86QI9VYM96YT.B!3=')I;F=!;&EG;FUE;G1.96%R.PT*"0EL
M:6YE06QI9VYM96YT.B!3=')I;F=!;&EG;FUE;G1&87([#0H)"7EO=7)S96QF
M(2 A#0HA1V1I<&QU<U-T<FEN9T9O<FUA="!C;&%S<R!C871E9V]R:65S1F]R
M.B C;F5A<D9A<B%I;G-T86YC92!C<F5A=&EO;B%P=6)L:6,A("$-"B%'9&EP
M;'5S4W1R:6YG1F]R;6%T(&-L87-S(&UE=&AO9'-&;W(A#0H-"FYE87).96%R
M#0H)(D%N<W=E<B!A;B!I;G-T86YC92!O9B!T:&4@<F5C96EV97(@=VET:"!A
M;&EG;FUE;G0Z#0H)"4AO<F]Z;VYT86PZ(&YE87(-"@D)5F5R=&EC86PZ(&YE
M87(B#0H-"@E>*'-E;&8@;F5W*0T*"0EA;&EG;FUE;G0Z(%-T<FEN9T%L:6=N
M;65N=$YE87([#0H)"6QI;F5!;&EG;FUE;G0Z(%-T<FEN9T%L:6=N;65N=$YE
M87([#0H)"7EO=7)S96QF(2 A#0HA1V1I<&QU<U-T<FEN9T9O<FUA="!C;&%S
M<R!C871E9V]R:65S1F]R.B C;F5A<DYE87(A:6YS=&%N8V4@8W)E871I;VXA
M<'5B;&EC(2 A#0H-"B%'9&EP;'5S4W1R:6YG1F]R;6%T(&UE=&AO9'-&;W(A
M#0H-"FQI;F5!;&EG;FUE;G0-"@DB06YS=V5R(&$@4W1R:6YG06QI9VYM96YT
M(&-O;G-T86YT("!T:&%T('-P96-I9FEE<R!H;W<@=&AE(')E8V5I=F5R('=I
M;&P@=F5R=&EC86QL>2!A;&EG;B -"@EC:&%R86-T97)S(&]F(&$@<W1R:6YG
M('=I=&AI;B!A(&QA>6]U="!R96-T86YG;&4N(@T*#0H)?"!S=&%T=7,@86YS
M=V5R('P-"@EA;G-W97(@.CT@4T173U)$(&YE=RX-"@DH<W1A='5S(#H]($=D
M:7!L=7-,:6)R87)Y(&1E9F%U;'0@9V1I<$=E=%-T<FEN9T9O<FUA=$QI;F5!
M;&EG;CH@<V5L9B!A<U!A<F%M971E<@T*"0D)"6%L:6=N.B!A;G-W97(I(#T@
M3VL@#0H)"6EF1F%L<V4Z(%M'9&EP;'5S17)R;W(@<VEG;F%L.B G1V1I<$=E
M=%-T<FEN9T9O<FUA=$QI;F5!;&EG;B!F86EL960G('=I=&@Z('-T871U<UTN
M#0H)7F%N<W=E<B!A<TEN=&5G97(A("$-"B%'9&EP;'5S4W1R:6YG1F]R;6%T
M(&-A=&5G;W)I97-&;W(Z("-L:6YE06QI9VYM96YT(6%C8V5S<VEN9R%P=6)L
-:6,A("$-"@T*#0H-"@``
`
end