|
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好- f; \) ]& M6 }5 k
2 y) u U4 k0 T# k. U
以下是skill
% ]; z; ]$ ?( P; l4 E6 p1 plet((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column
6 E9 r+ I5 l; g2 s i dot x y signature offset width height pixel ImageSize )
* N E5 r; a/ w4 ^8 G, J `' k# A+ [1 o( N7 Z
win = hiGetCurrentWindow()
/ \3 ^0 H$ O: s- k; U cv = getEditRep(win)6 \# y: x0 V/ U7 y% m6 Q) s0 L
- C/ B5 E9 z+ x$ @ u$ H
bmpfile = "~/number_mini.bmp" ;;; Input BMP File
p8 t" r: U7 T( }( M& ~ O Layer = list("TTOPME" "drawing") ;;; Output Layer
G" C- k# b6 l5 g# u Grid = 1 ;;; Rectangle Size2 w& L) y1 r$ @$ t4 y4 n) x, |) M$ q7 r
column = 02 f: ~! q8 a* o9 B# C+ j
7 {" N! z: W1 T/ L! E: w' M
procedure(MessageForm(text)
2 x. z( b& s2 T) D6 |5 t prog( ()9 u! |1 a1 g1 }6 c2 A! k; O
hiDisplayAppDBox(
, t: `+ b( [6 `4 W# u; | ?name 'JWDBox_Message
8 U3 P! U0 X1 J4 Y ?dboxBanner "Message!!"3 Z+ b( j+ }9 w1 s0 z/ m! S
?buttonLayout 'Close8 c# Y: f2 c- U9 S8 R& T4 ~: ^ w
?dboxText text
3 |: S7 r7 p' i. Y' ~1 C )5 ]; D1 c k0 B
);prog
( O$ `8 B5 |4 R) |5 N3 O);procedure, I5 ^7 I: M, N5 U+ x3 E3 r2 }2 G
2 ?/ G3 t" d9 ~ `2 m' i: v
;Read BMP file( `1 z1 b- M h+ u+ l' N# K1 U3 a
if(InFile = infile(bmpfile) then
# Q9 M* Y8 R; R" |& T- n8 y0 T bmpSize = fileLength(bmpfile)6 Y" O3 }6 v. b( d" c
declare(WORD[bmpSize])
2 f( l5 Y- n9 j# q$ I9 r% R/ D& n( ? for(Wnum 0 bmpSize-1 WORD[Wnum] = charToInt(getc(InFile)) )
4 y8 [$ H# g/ W2 l close(InFile)
6 W# ~2 n8 d2 R( z; y9 m( A- C else5 A% s/ K/ V/ X% Z1 g4 r! B
MessageForm("Input file does not exist!")* C6 I( |: H. C0 u; ~! y- u( A& k
return(); l: S. B* L7 f( o- Q, p. w4 g2 B
)
! K% W" T0 Z/ H, A* G* u1 K2 H& Q/ }) o4 L) e! |
sprintf(signature "%02x%02x" WORD[0] WORD[1])+ V+ g1 K1 `, i5 C
offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a] 3 s' a* p% J# V* ~' f. V
width = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
# |. K0 i9 c* j" _0 H height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
; Q0 Y& r& c4 n" x% d' _ pixel = (WORD[0x1d]<<8) + WORD[0x1c]
% g9 k, Z) e9 ]% @ ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]7 I5 d0 P- Z9 A) i! t
7 ]1 d" D. {( Z% q/ @2 m3 Z
printf("--- BMP2LAY Start --- %L\n" getCurrentTime())
/ Z5 P4 p( x2 P( C% @; U( R+ h: _9 T8 [ printf("offset : 0x%x \n" offset)' y$ R" w' C8 M
printf("width : 0x%x \n" width)1 A9 Z+ s0 R4 O$ Y/ r
printf("height : 0x%x \n" height)
. I& S" s; k( D printf("ImgSize : 0x%x \n" ImageSize): \7 }: }2 O/ p, G# k1 F
& w9 ?5 r8 E/ x# A( G/ R( x
;check bmp file
& G- s; C7 U! X* c3 C5 ]$ R) D if(!equal(signature "424d") then* \% @0 F9 ]6 ^) Y2 b7 C7 J
MessageForm("*ERROR* Standard Input is not a BMP file")
4 y# I' X; N% Y# Q+ m return()
. a( W, r# B: |5 T )
9 l; X# N( w# k8 {/ H# `- y( G, O- O1 o2 h* X! B; Q9 s ?
;check mono bmp file+ {2 \$ A& l5 @; s/ {/ j! ^. S
if(!equal(pixel 0x01) then0 t' R4 I; @( H( a: t, }. {
MessageForm("*ERROR* only supports mono bmp files"). s$ W7 \9 L; _) u$ s+ X, c% y: a
return(); b# w- g/ w3 x8 U
)4 K0 n5 P% N9 t* b9 m
" i4 D7 s* a! D! y6 x i
;BMP2LAY
7 u( N5 A$ U' e( A" f max_column = ImageSize/height<<39 z4 q: {8 o! v0 Y; G+ s
number = offset+ImageSize-1
+ t0 W( s, U- T# R f q8 q
3 q/ m: C9 D4 d" Y# c for(Wnum offset number
' K" i- V2 }4 L$ R9 e( o row = fix((Wnum-offset)/(max_column>>3))- p8 G( n" c! `+ }1 [% @7 k: l
y = Grid*row
) ~: P* v% R* n* ^
) s5 I$ S4 ?' [- i, r for(i 0 7
9 p: U( y, ?# }! f0 w* s% x dot = bitfield1(WORD[Wnum] 7-i) ; bit<7> ~ bit<0>
; V0 z6 s. f( a. K! G# ~% ]( U x = Grid*column* @' [. T0 U4 s
if(zerop(dot) && column<width then
/ M, |8 u8 L; A7 }" c. s geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))4 K! Y; S* _ g% U# o( r- H* o
)
. s* ^3 a6 x$ ~8 x column++" ~ Y+ W# s- m" | S
);for! x/ F% C0 _7 E
if(equal(column max_column) column=0)7 J# j( w5 V& x; Z: ]
Wnum++9 E7 R$ z3 [+ v* l) T8 x8 m7 `
);for
0 e- d9 N8 ` c& w8 j4 ^2 ~
X: {9 b. c- y8 h9 f hiZoomIn(win list(-10:-10 x+10:y+10))
# ]6 _9 L) R4 R4 j) E+ S printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
0 v6 i0 i. k7 A, K6 i! d1 });let) d+ m) L: j8 q( _" N
# W! i0 v+ w" _: B# n
|
|