|
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好) W7 f: C: [( @- ]' }
5 {! }/ v L+ L7 r+ W# P以下是skill B" B7 X( X3 M7 l$ V& H
let((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column0 \/ l1 ]# k `5 _5 x6 Y' R
i dot x y signature offset width height pixel ImageSize )
6 }% I5 F$ c! h5 E
4 s2 O2 A. t; A6 [* [$ z win = hiGetCurrentWindow()" D1 t' H7 X( v! a L
cv = getEditRep(win)
3 i6 ^: H5 V( q8 o6 H+ D( L K$ l+ b2 Z+ ]1 y& ^
bmpfile = "~/number_mini.bmp" ;;; Input BMP File
3 O: T/ b4 Y5 T/ H$ U8 x/ F0 e Layer = list("TTOPME" "drawing") ;;; Output Layer t w6 S7 |6 M2 Z+ N" T
Grid = 1 ;;; Rectangle Size
; J7 a% a# j0 c2 m% d2 J C' k column = 0
2 z6 t" I: _: p6 o Z9 }5 f. [0 Y7 l/ g3 S0 A: G
procedure(MessageForm(text)( o: k7 C3 E! C8 y+ C4 K" V7 K
prog( ()
- `% @ d& q F$ z hiDisplayAppDBox(7 o: | F L' `# r- q9 b: b
?name 'JWDBox_Message* v$ l. b* E/ Y" C
?dboxBanner "Message!!"
+ Y& I- O6 R8 u3 o ?buttonLayout 'Close. b6 ]+ r* F$ M* O7 t( h% f
?dboxText text
& z0 t( Q5 d! z4 u; T )4 @7 _ s3 ]+ H' g0 ^
);prog7 S/ T. M0 Q& |! ?
);procedure
; w S, k- c$ m- t, }3 m- ?; p- R2 c' E! A( G
;Read BMP file
b$ P6 }2 u$ X! a$ T' I$ _' D if(InFile = infile(bmpfile) then
`1 }8 J4 e+ y) N bmpSize = fileLength(bmpfile)( K4 K" ]& d% U) u, i" i5 z' `
declare(WORD[bmpSize])
% T1 J0 X U, C0 c9 m- w2 O2 Z for(Wnum 0 bmpSize-1 WORD[Wnum] = charToInt(getc(InFile)) )
2 E& j" J; o: C+ d close(InFile)6 U' N" H: ]- t3 x3 T
else, X3 L1 f: F, d9 v: b7 L5 R
MessageForm("Input file does not exist!")) X0 R8 q7 T) l- |) d& x3 P* V
return()
- B; z6 h. t; ?( W( V9 x )
4 Z. l% f# G1 C; A& F
4 f0 v, N4 y R8 r% F sprintf(signature "%02x%02x" WORD[0] WORD[1])
' f9 Z* ]8 ^2 G- y ^7 }( ^ offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a]
+ T! V! G/ G2 K( F2 Q/ `* d width = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
. f/ |: |& l$ }( z( y height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
; l" J+ t6 P% `) y pixel = (WORD[0x1d]<<8) + WORD[0x1c]. j# n5 H/ l5 G. t! l9 X1 J
ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]
3 G* T$ @- u9 P. { k* z6 L" M) P8 n6 x* @2 L, r$ c
printf("--- BMP2LAY Start --- %L\n" getCurrentTime())
- B9 b# j' g( L" f" ] printf("offset : 0x%x \n" offset)8 j/ }5 l" J# l' N0 U( F4 t
printf("width : 0x%x \n" width)' T0 A% C1 D# x1 R
printf("height : 0x%x \n" height)
' c6 g$ Y! O7 S0 }/ X2 x printf("ImgSize : 0x%x \n" ImageSize)0 L2 A% D3 z6 }3 _7 w8 ?
9 M1 h) z5 T' E, ]( A. Y;check bmp file) I R# [7 H: M& F
if(!equal(signature "424d") then: O( c1 R6 g" }! R; l0 {
MessageForm("*ERROR* Standard Input is not a BMP file")
# \0 z. l. m/ b& |6 s3 }" i return(): f( P7 n3 |* k$ Q! L
)
# K# Y/ M2 u/ O8 J; c* Q+ g- F! A* C% a
;check mono bmp file
l# Z" q3 B; }$ i8 E3 k if(!equal(pixel 0x01) then
# ?* }; h s7 V. {( e MessageForm("*ERROR* only supports mono bmp files")
7 y9 A: F$ E! `; c return()1 X3 P8 v2 l7 K& B3 f3 T2 s; i
)
% M% [( |2 ]4 t2 p& _
% T% t1 G( O" j% |, W7 Z( k0 B;BMP2LAY
( v; T# @/ ]6 U# z9 f# M2 G max_column = ImageSize/height<<3$ ^4 X! N7 J2 n1 U N5 H
number = offset+ImageSize-10 M4 ~% w7 g: h) ]; U
- v$ |/ C! Q: G3 q' {: _! k
for(Wnum offset number Z# _# l9 b; D& h* Y7 a5 }( j
row = fix((Wnum-offset)/(max_column>>3))
% G& P) ]0 z I2 v; t y = Grid*row5 O! S( p1 P* H6 C
F M! ^, o% v' P7 d
for(i 0 7+ O2 V- A6 L% s- [; d
dot = bitfield1(WORD[Wnum] 7-i) ; bit<7> ~ bit<0>6 `' {, D2 X# {
x = Grid*column
4 g2 u* D6 d5 j+ W: I if(zerop(dot) && column<width then; B( }3 ^* F& i& r* W2 b
geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))
+ K' @$ @+ c0 O4 Z )( W3 D1 S0 P0 U* R/ i' ?; ]" S
column++
3 S$ e; M1 S9 R0 b );for3 ~1 Z ~: F. |& i: }( y, v
if(equal(column max_column) column=0)! e- D2 P4 Q* ^" N J1 P
Wnum++
" j0 ~1 ~( H( _! j* `' y9 g );for
, h9 u1 J2 \* |5 v& W- S0 D" d6 P. Q+ e$ S6 e0 z% c
hiZoomIn(win list(-10:-10 x+10:y+10))3 u. ]6 g& b. |2 \6 n4 _2 s1 ~
printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
k/ S$ o4 c/ t9 R: ? A);let
, _( V* z5 L! ?6 p$ m, W& S3 d' @! ]' I( \) N
|
|