Class new title: BitBlt subclassof: Object fields: 'function color destbase destraster destx desty width height sourcebase sourceraster sourcex sourcey clipx clipy clipwidth clipheight sourcefield destfield source dest sstrike dstrike ' declare: 'pageOneCursor ' bltObj: t1 field: t2 to: t3 fromObj: t4 field: t5 [dest _ t1. desty _ t2. source _ t4. sourcey _ t5. desty < 1  [user notify: 'bltObj field spec is 1-origin, like vectors'] clipx _ 0. destx _ clipx. sourcex _ destx. clipwidth _ 16. width _ clipwidth. clipheight _ t3 - desty + 1. height _ clipheight. desty _ desty - 1. clipy _ desty. sourcey _ sourcey - 1. [source  nil  [color _ [NoteTaker  [0] 1]. function _ 12] function _ 0. color _ function]. NoteTaker  [sourcebase _ source. destbase _ dest. [Dorado  [destraster _ 1. sourceraster _ destraster] destraster _ 2. sourceraster _ destraster. destfield _ 1. sourcefield _ destfield]. self callBLT] destraster _ 1. sourceraster _ destraster. destbase _ dest nail. [source  nil  [sourcebase _ destbase] sourcebase _ source nail]. self callBLT. destbase _ dest unNail. source  nil  [] sourcebase _ source unNail] bltrect: t1 topt: t2 mode: t3 color: t4 [function _ t3. color _ t4. destx _ t2 x. desty _ t2 y. t2 _ t1 origin. sourcex _ t2 x. sourcey _ t2 y. t2 _ t1 corner. width _ t2 x - sourcex. height _ t2 y - sourcey. self callBLT] callBLT [user croak] primitive: 40 checksandcall | t1 t2 [NoteTaker  [user notify: 'Not supported on NT'] function _ function land: 15. [destbase class  String  [t1 _ destbase. destbase _ [dstrike  [t1 lock + 9] t1 lock]] destbase  281  [function _ function + 16]]. [sourcebase class  String  [t2 _ sourcebase. sourcebase _ [sstrike  [t2 lock + 9] t2 lock]] sourcebase  281  [function _ function + 32]]. self callBLT. [t1  nil  [] destbase _ t1 unlock]. t2  nil  [] sourcebase _ t2 unlock] classInit [pageOneCursor _ 281] clipTo: t1 [clipx _ t1 minX. clipy _ t1 minY. clipwidth _ t1 width. clipheight _ t1 height] color [color] color_ t1 [color _ t1] copy: t1 [function _ t1 land: 3. self checksandcall] copycomp: t1 [function _ 4 + (t1 land: 3). self checksandcall] destForm_ t1 [dest _ t1. self clipTo: (0  0 rect: dest extent). destraster _ dest width + 15 / 16. destfield _ dest height + 1 / 2 * destraster. destbase _ [NoteTaker  [dest bits] dest bits lock]] dest_ t1 [destx _ t1 x. desty _ t1 y] destbase [destbase] destbase_ t1 [destbase _ t1] destraster [destraster] destraster_ t1 [destraster _ t1] destx [destx] destx_ t1 [destx _ t1] desty [desty] desty_ t1 [desty _ t1] dstrike [dstrike] dstrike_ t1 [dstrike _ t1] extent_ t1 [width _ t1 x. height _ t1 y] fill: t1 color: t2 [color _ t2. function _ 12 + (t1 land: 3). self checksandcall] forCursor [color _ 0. function _ color. sourcebase _ 281. destbase _ sourcebase. height _ 16. width _ height. sourceraster _ 1. destraster _ sourceraster. sourcey _ 0. sourcex _ sourcey. desty _ sourcex. destx _ desty. dstrike _ false. sstrike _ dstrike] fromDisplay [self sourceForm_ DisplayForm] function [function] function_ t1 [function _ t1] height [height] height_ t1 [height _ t1] init [sourcey _ 0. sourcex _ sourcey. height _ sourcex. width _ height. desty _ width. destx _ desty. color _ destx. function _ color. dstrike _ false. sstrike _ dstrike] installForIOP [user croak] primitive: 41 paint: t1 [function _ 8 + (t1 land: 3). self checksandcall] release: t1 [NoteTaker  [dest  DisplayForm  [destbase _ nil. dest _ destbase]] t1 bits unlock] sourceForm_ t1 [source _ t1. sourceraster _ source width + 15 / 16. sourcefield _ source height + 1 / 2 * sourceraster. sourcebase _ [NoteTaker  [source bits] source bits lock]] source_ t1 [sourcex _ t1 x. sourcey _ t1 y] sourcebase [sourcebase] sourcebase_ t1 [sourcebase _ t1] sourceraster [sourceraster] sourceraster_ t1 [sourceraster _ t1] sourcex [sourcex] sourcex_ t1 [sourcex _ t1] sourcey [sourcey] sourcey_ t1 [sourcey _ t1] sstrike [sstrike] sstrike_ t1 [sstrike _ t1] stringCopy: t1 from: t2 to: t3 with: t4 from: t5 to: t6 [width _ 1 + t3 - t2. width = 0  [t1] (t2 > 4096 or t5 > 4096) or width  4096  [false] (width < 0 or width  (1 + t6 - t5)) or ((t2 < 1 or t3 > t1 length) or (t5 < 1 or t6 > t4 length))  [user notify: 'illegal range or subscript'] width _ width * 8. destbase _ t1 lock. destx _ t2 - 1 * 8. sourcebase _ t4 lock. sourcex _ t5 - 1 * 8. self callBLT. t4 unlock. t1  1 _ t1  1. t1 unlock. t1] stringReplace: t1 with: t2 from: t3 to: t4 and: t5 from: t6 to: t7 | t8 [t1 length = 0  [t1] (t4  4096 or t2 length - t4  4096) or (t3 + t7 - t6  4096 or t6 > 4096)  [false] (t3 < 1 or t4 > t2 length) or (t6 < 1 or t7 > t5 length)  [user notify: 'illegal subscript'] destbase _ t1 lock. t8 _ t2 lock. sourcebase _ t8. width _ t3 - 1 * 8. [width = 0  [] destx _ 0. sourcex _ destx. self callBLT]. destx _ width. width _ 1 + t7 - t6 * 8. [width = 0  [] sourcex _ t6 - 1 * 8. sourcebase _ t5 lock. self callBLT. t5 unlock]. destx _ destx + width. width _ t2 length - t4 * 8. [width = 0  [] sourcebase _ t8. sourcex _ t4 * 8. self callBLT]. t1  1 _ t1  1. t2 unlock. t1 unlock. t1] toDisplay [NoteTaker  [self destForm_ DisplayForm. source  nil  [self sourceForm_ DisplayForm]] destbase _ mem  54. destraster _ user screenrect width / 32 * 2] width [width] width_ t1 [width _ t1] window [clipx  clipy rect: clipx + clipwidth  (clipy + clipheight)] window: t1 [NoteTaker  [self clipTo: (t1 intersect: (0  0 rect: dest extent))]]