|
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好
% k# }2 Y* j* P# a+ J; o
3 n* C: v. `; v) K+ s/ x7 Q$ b以下是skill% N) _7 w' Q( m& H) z
let((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column' B0 I% k+ j: d1 B
i dot x y signature offset width height pixel ImageSize )
! H6 V/ F: z! J
4 {6 b3 W/ u6 L+ e7 m" [) |% t win = hiGetCurrentWindow()
/ j3 j& [. G0 C6 P cv = getEditRep(win)
5 f1 p, O7 ]. Y( w& [
2 _1 [/ u2 W% {6 ?+ d! J bmpfile = "~/number_mini.bmp" ;;; Input BMP File
# G" B2 Q: Q2 @4 H Layer = list("TTOPME" "drawing") ;;; Output Layer
9 l4 P3 e0 S. y Grid = 1 ;;; Rectangle Size
7 M1 i7 K! i, ^, T column = 0, L5 ?+ \1 |3 v
3 j( i: J0 {* j2 O
procedure(MessageForm(text)3 ?, i( R4 R# I/ Z8 L8 S
prog( ()- c# Z- F, Q; ] _# S7 J0 L
hiDisplayAppDBox(/ f* j) m- C- T ]; U
?name 'JWDBox_Message
8 P' {% _3 ]8 v ?dboxBanner "Message!!"
% y1 v; x Z' b& X2 f ?buttonLayout 'Close6 q8 U, [0 P% q; X0 ~2 k
?dboxText text
* M' P8 U8 [, N1 P: H; N )( k5 L" {% O0 V2 W
);prog0 |! X+ Y! X8 t t( A
);procedure
. s3 m* V$ e" f7 k
6 S% Q6 L) g2 i& O3 m5 |4 |;Read BMP file
# s% }8 I% l- h8 P% {* i) T if(InFile = infile(bmpfile) then+ x0 D6 K, [1 C( `) I' b
bmpSize = fileLength(bmpfile)
& |5 r* W- s& x/ \9 } declare(WORD[bmpSize])" @1 p3 z; T6 I2 I* E& Y: I# |: L4 ?
for(Wnum 0 bmpSize-1 WORD[Wnum] = charToInt(getc(InFile)) )
+ y$ m* Z @& W/ N& {% y close(InFile)2 {1 L+ ]/ C. h+ u
else
( h5 b# s& h; X9 k1 {0 O MessageForm("Input file does not exist!")
9 ]- a6 F- ?; O$ s" d, v8 ] return()
6 n- |; j0 \, r )
* x; u/ a+ w# c, ~- O4 f8 t: R4 q- @2 W6 {" T0 |
sprintf(signature "%02x%02x" WORD[0] WORD[1])0 A; _. K% h: k+ \# N
offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a]
) c" ^% r0 S: e% P width = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
- o8 J& e, T+ K6 m height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
0 i$ {3 d0 o' I- T1 o" I1 S8 ^4 U pixel = (WORD[0x1d]<<8) + WORD[0x1c]! B- }2 I5 c8 a# j! I
ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]
+ l7 a; X8 T. G( O& X
0 ~5 C" Q' A! p6 }1 X' U printf("--- BMP2LAY Start --- %L\n" getCurrentTime())
N8 s7 V' Z$ r% A printf("offset : 0x%x \n" offset)
7 D& |/ g" Z5 e/ ~' l0 k* C printf("width : 0x%x \n" width)
" x( D! s* o: J7 L5 p: y printf("height : 0x%x \n" height)
+ ?! q4 n# ~: C2 s printf("ImgSize : 0x%x \n" ImageSize). x( L% n5 `3 e1 N& t, U/ V% g
" H7 m) S& ?5 n/ i4 z) ?; r;check bmp file9 y# B; t) v. S1 r4 ?
if(!equal(signature "424d") then
1 t' F3 e" j' s: b# ~! s8 E$ Z1 E MessageForm("*ERROR* Standard Input is not a BMP file")2 N+ o% \8 k3 F8 b% }- M; e' B
return()
2 [9 E) e) C& d4 d+ o7 v3 ~% G )
# Y$ P9 Z: J7 ?5 {3 l- _) ^: M% d! P) r& v5 R5 D2 `
;check mono bmp file. N% |3 n" S/ b( Q5 r7 D/ R" V* @
if(!equal(pixel 0x01) then
( A5 f' ]4 [- r MessageForm("*ERROR* only supports mono bmp files")
6 D2 m9 Y! a/ i return()
_& i! f1 J/ C )
* s3 c7 T/ H$ K- O7 |; d% u% C7 M& ^0 y/ |& o
;BMP2LAY( s* m( ^& U T# U q
max_column = ImageSize/height<<3
$ w9 c& M [6 J4 t: A% o number = offset+ImageSize-1: M/ `6 K) Z* @3 h
; ]# G6 z% M2 N- _4 { for(Wnum offset number
6 v) E2 F# t0 t' x& f' g+ Y5 W+ E/ H row = fix((Wnum-offset)/(max_column>>3))+ q/ c, K) x, b# ~& U8 X3 W+ M) H9 p M
y = Grid*row$ G" `2 |+ W1 \2 x+ I6 d( v
( g! N- C8 b _/ e
for(i 0 74 E, h; I3 u9 ~
dot = bitfield1(WORD[Wnum] 7-i) ; bit<7> ~ bit<0>( g; P0 x$ P. q# b! T
x = Grid*column
1 v% x% C8 P& l, X$ r6 Y/ H if(zerop(dot) && column<width then
# C; H$ ]6 v* F3 [1 ]7 c9 q geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))
0 p. {( h6 S9 P6 q: \6 j& S. k )6 Z$ i5 e" j; x& x! }
column++0 z' ?5 A B1 m; `" G
);for9 e8 }4 k5 x0 u9 K
if(equal(column max_column) column=0)
7 B- d, _: F+ i- j& ]: n9 F Wnum++- s$ G3 K+ j) L4 t5 t
);for
5 T( L+ {4 z( N. b& U4 Y5 r& D+ i- `, K# P
hiZoomIn(win list(-10:-10 x+10:y+10))
6 a; J9 P1 {, S0 C printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
7 T9 d7 p7 x& H8 v ]8 e* a);let
" M! w- E. b' H3 T2 ^8 }2 S! ^; m' L6 w4 p
|
|