'From Squeak3.5 of ''11 April 2003'' [latest update: #5180] on 27 April 2003 at 6:13:07 pm'! "Change Set: photos publisher Date: 30 October 2002 Author: Stephan B. Wessels NOTE: This change set requires Dialogs-sbw. Creates a web site from a folder of pictures. You select a folder full of pictures you want to include on your web site, then select the output folder where your web site contents will be generated. The photos publisher will produce the html files necessary to share your photos. It will copy the original images to the target web site folder as well as create image thubmnails that look pretty nice. It will create the subdirectory folder structure as required. The main starting page is named index.html. You launch via: PhotoPublisher process: 'THE NAME YOU WANT AT THE TOP OF EACH THUMBNAIL INDEXES SHEET GOES HERE'. Date Update ------------- ----------------------------------------------------------------------- 20-apr-2003 Added prerequisite change set checking to preamble. 15-apr-2003 update for Squeak 3.5 30-oct-2002 initial release. " | prereqSMName continue cs prereqCSName prereqRevDateRqd | prereqCSName _ 'Dialogs-sbw'. prereqSMName _ 'FileList2 Dialogs Enhancement'. prereqRevDateRqd _ '15-apr-2003' asDate. continue _ (ChangeSorter respondsTo: #assurePrerequisiteChangeSetNamed:withSqueakMapName:revisionDate:) ifTrue: [ChangeSorter assurePrerequisiteChangeSetNamed: prereqCSName withSqueakMapName: prereqSMName revisionDate: prereqRevDateRqd] ifFalse: [cs _ ChangeSorter changeSetNamed: prereqCSName. cs isNil ifTrue: [(Object confirm: 'The package "' , prereqSMName , '" is not installed in your image. Do you want me to install it for you?. Please note that "' , prereqSMName , '" is required for the package you are about to install.') and: []. (Smalltalk at: #SMSqueakMap ifAbsent: []) ifNil: [Object error: 'You don''t have installed Squeakmap in your image']. Utilities informUser: 'Installing "' , prereqSMName , '"...' during: [(Smalltalk at: #SMSqueakMap) default installPackageNamed: prereqSMName]. true] ifFalse: [true]]. continue ifFalse: [Object error: 'Unable to load prerequisite package.']. ! Object subclass: #PhotoPublisher instanceVariableNames: 'outputRootFolder inputImagesFolder pageTitle maxImageExtent maxThumbnailExtent columns rows imageFileNames replaceThumbnails ' classVariableNames: 'BoundaryForms ' poolDictionaries: '' category: 'PhotoPublisher'! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:29'! columns ^columns! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:29'! columns: int columns _ int! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:27'! imageFileNames ^imageFileNames! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:27'! imageFileNames: coll imageFileNames _ coll! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 19:19'! inputImagesFolder ^ inputImagesFolder! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 19:19'! inputImagesFolder: dir inputImagesFolder _ dir! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 22:09'! maxImageExtent maxImageExtent == nil ifTrue: [self maxImageExtent: 640@480]. ^ maxImageExtent! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:28'! maxImageExtent: aPoint maxImageExtent _ aPoint! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 22:09'! maxThumbnailExtent maxThumbnailExtent == nil ifTrue: [self maxThumbnailExtent: 240@160]. ^ maxThumbnailExtent! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:29'! maxThumbnailExtent: aPoint maxThumbnailExtent _ aPoint! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 19:18'! outputRootFolder ^outputRootFolder! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 19:18'! outputRootFolder: dir outputRootFolder _ dir! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:28'! pageTitle ^pageTitle! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:28'! pageTitle: aString pageTitle _ aString! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/29/2002 22:17'! replaceThumbnails replaceThumbnails == nil ifTrue: [replaceThumbnails _ false]. ^ replaceThumbnails! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/29/2002 22:07'! replaceThumbnails: aBoolean replaceThumbnails _ aBoolean! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:29'! rows ^rows! ! !PhotoPublisher methodsFor: 'accessing' stamp: 'sbw 10/22/2002 20:29'! rows: int rows _ int! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/31/2002 19:38'! calculatedThumbnailsPageNumberForIndex: anInteger ^ anInteger - 1 // (self rows * self columns) + 1! ]style[(40 9 5 9 3 1 5 4 8 4 12 1)f1b,f1cblue;b,f1,f1cblue;i,f1,f1c000196085i,f1,f1cmagenta;,f1,f1cmagenta;,f1,f1c000196085i! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/29/2002 22:32'! copyImageFileNamed: aFileName | dir | dir _ self outputRootFolder directoryNamed: self class imagesFolderName. (dir fileExists: aFileName) ifTrue: [^nil]. self inputImagesFolder copyFileNamed: aFileName toDirectory: dir! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/29/2002 22:16'! copyImages self imageFileNames do: [:each | self copyImageFileNamed: each]! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/31/2002 19:46'! createImagePageAtIndex: anInteger | pgName dir stream fName baseName pTitle previousFName previousBaseName previousPageName nextFName nextBaseName nextPageName thumbnailsPageNumber thumbnailPageName | thumbnailsPageNumber _ self calculatedThumbnailsPageNumberForIndex: anInteger. thumbnailPageName _ self thumbnailsPageNameForPageNumber: thumbnailsPageNumber. fName _ self imageFileNames at: anInteger. baseName _ FileDirectory baseNameFor: fName. pgName _ baseName , '.html'. pTitle _ 'Image ' , baseName. dir _ self outputRootFolder directoryNamed: self class imagePagesFolderName. stream _ dir forceNewFileNamed: pgName. stream nextPutAll: ' '. stream nextPutAll: pTitle. stream nextPutAll: ' Use the Arrows to navigate to other pictures. Click on the up arrow to go back to the thumbnails view.
'. anInteger = 1 ifTrue: [stream nextPutAll: ' '] ifFalse: [previousFName _ self imageFileNames at: anInteger - 1. previousBaseName _ FileDirectory baseNameFor: previousFName. previousPageName _ previousBaseName , '.html'. stream nextPutAll: ' ']. stream nextPutAll: ' '. anInteger = self imageFileNames size ifTrue: [stream nextPutAll: ' '] ifFalse: [nextFName _ self imageFileNames at: anInteger + 1. nextBaseName _ FileDirectory baseNameFor: nextFName. nextPageName _ nextBaseName , '.html'. stream nextPutAll: ' ']. stream nextPutAll: '
   
'. stream close! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/29/2002 22:55'! createImagePages 1 to: self imageFileNames size do: [:index | self createImagePageAtIndex: index]! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/22/2002 20:43'! createOutputFolderStructure | names | names _ Array with: self class imagePagesFolderName with: self class imagesFolderName with: self class thumbnailsFolderName. names do: [:each | (self outputRootFolder directoryExists: each) ifFalse: [self outputRootFolder createDirectory: each]]! ]style[(29 11 22 4 36 4 32 4 52 4 51 4 41)f1b,f1,f1b,f1cmagenta;,f1,f1cmagenta;,f1,f1cmagenta;,f1,f1cmagenta;,f1,f1cmagenta;,f1! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/29/2002 22:20'! createThumbForImageFileNamed: aFileName | image scaledImage ptRatio div scaledExt better baseName tName tDir | baseName _ FileDirectory baseNameFor: aFileName. tDir _ self outputRootFolder directoryNamed: self class thumbnailsFolderName. tName _ tDir fullNameFor: baseName , '.jpg'. (tDir fileExists: tName) ifTrue: [self replaceThumbnails ifTrue: [tDir deleteFileNamed: tName] ifFalse: [^nil]]. image _ self imageForFileNamed: aFileName. ptRatio _ image extent / self maxThumbnailExtent. div _ ptRatio x max: ptRatio y. scaledExt _ (image extent / div) rounded. scaledImage _ image scaledToSize: scaledExt. better _ self dressUpThumbnailImage: scaledImage. JPEGReadWriter2 putForm: better onFileNamed: tName ! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/31/2002 18:49'! createThumbnailPageNamed: aString start: anInteger pageCounter: pageCounter | columnCounter dir stream imageCounter limit pTitle rowCounter imageFileName baseName continue thumbsPerPage lastPage | pTitle _ self pageTitle. pTitle == nil ifTrue: [pTitle _ '']. limit _ self imageFileNames size. columnCounter _ 0. rowCounter _ 0. imageCounter _ anInteger. dir _ self outputRootFolder. stream _ dir forceNewFileNamed: aString. stream nextPutAll: ' ' , pTitle , '

' , pTitle , '

Use the Arrows to navigate to other pictures. Click on a "thumbnail" picture to see a larger one. '. stream nextPutAll: '
'. pageCounter = 1 ifTrue: [stream nextPutAll: ' '] ifFalse: [stream nextPutAll: ' ']. stream nextPutAll: ' '. pageCounter = 1 ifTrue: [stream nextPutAll: ' '] ifFalse: [stream nextPutAll: ' ']. stream nextPutAll: ' '. thumbsPerPage _ self rows * self columns. lastPage _ limit // thumbsPerPage + 1. pageCounter = lastPage ifTrue: [stream nextPutAll: ' '] ifFalse: [stream nextPutAll: ' ']. stream nextPutAll: '
'. continue _ true. [continue] whileTrue: [rowCounter _ rowCounter + 1. continue _ rowCounter <= self rows. continue ifTrue: [stream nextPutAll: ' '. [columnCounter _ columnCounter + 1. columnCounter <= self columns and: [continue]] whileTrue: [imageFileName _ self imageFileNames at: imageCounter. baseName _ FileDirectory baseNameFor: imageFileName. stream nextPutAll: ' '. imageCounter = limit ifTrue: [continue _ false] ifFalse: [imageCounter _ imageCounter + 1]]. columnCounter _ 0. stream nextPutAll: ' ']]. stream nextPutAll: '
'. stream nextPutAll: ''. stream nextPutAll: '
'. stream close. imageCounter < limit ifTrue: [self createThumbnailPageNamed: (self thumbnailsPageNameForPageNumber: pageCounter + 1) start: imageCounter pageCounter: pageCounter + 1]! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/31/2002 18:50'! createThumbnailPages self createThumbnailPageNamed: (self thumbnailsPageNameForPageNumber: 1) start: 1 pageCounter: 1! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/22/2002 22:13'! createThumbnails self imageFileNames do: [:each | self createThumbForImageFileNamed: each]! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/22/2002 20:38'! getImageFileNames self imageFileNames: (self inputImagesFolder fileNames select: [:fileName | self class validImageFileExtensions includes: (FileDirectory extensionFor: fileName)])! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/31/2002 18:51'! process self createOutputFolderStructure; createArrowGIFs; getImageFileNames; setRowsAndColumns; createThumbnails; copyImages; createImagePages; createThumbnailPages! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/31/2002 18:50'! setRowsAndColumns self columns == nil ifTrue: [self columns: 3]. self rows == nil ifTrue: [self rows: 4]. ! ! !PhotoPublisher methodsFor: 'process files' stamp: 'sbw 10/30/2002 05:55'! thumbnailsPageNameForPageNumber: anInteger ^anInteger = 1 ifTrue: ['index.html'] ifFalse: [ 'page' , anInteger printString , '.html']! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/29/2002 21:10'! adjustCornersOfForm: destForm cornerBox: cornerBox pictPoint: pictPoint framePoint: framePoint boxPoint: boxPoint radius: radius | clip | clip _ boxPoint extent: cornerBox extent. ((BitBlt current destForm: destForm sourceForm: (Form dotOfSize: (2*radius)) fillColor: Color white combinationRule: Form paint destOrigin: framePoint sourceOrigin: 0@0 extent: (radius*2)@(radius*2) clipRect: clip) "4294967295" "Draw white pixels only" colorMap: (Bitmap with: (65536 * 65536 - 1) with: 0)) copyBits! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/22/2002 21:26'! createArrowGIFs self createRightArrowGIF; createLeftArrowGIF; createUpArrowGIF! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/23/2002 12:15'! createLeftArrowGIF | fName | fName _ self outputRootFolder fullNameFor: self class leftArrowGIFName. (self outputRootFolder fileExists: self class leftArrowGIFName) ifTrue: [self outputRootFolder deleteFileNamed: self class leftArrowGIFName]. GIFReadWriter putForm: self class leftArrowForm onFileNamed: fName! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/23/2002 12:15'! createRightArrowGIF | fName | fName _ self outputRootFolder fullNameFor: self class rightArrowGIFName. (self outputRootFolder fileExists: self class rightArrowGIFName) ifTrue: [self outputRootFolder deleteFileNamed: self class rightArrowGIFName]. GIFReadWriter putForm: self class rightArrowForm onFileNamed: fName! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/23/2002 12:16'! createUpArrowGIF | fName | fName _ self outputRootFolder fullNameFor: self class upArrowGIFName. (self outputRootFolder fileExists: self class upArrowGIFName) ifTrue: [self outputRootFolder deleteFileNamed: self class upArrowGIFName]. GIFReadWriter putForm: self class upArrowForm onFileNamed: fName! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/29/2002 21:23'! drawMaskFormFrom: newForm scaledForm: scaledForm radius: radius boundariesRect: boundariesRect | leftB topB rightB bottomB maskForm blackDot inRect blackForm topForm leftForm | leftB _ boundariesRect origin x. topB _ boundariesRect origin y. rightB _ boundariesRect corner x. bottomB _ boundariesRect corner y. maskForm _ Form extent: newForm extent. maskForm fillWhite. blackDot _ Form extent: 2 * radius @ (2 * radius). blackDot fillColor: Color white. ((BitBlt current destForm: blackDot sourceForm: (Form dotOfSize: 2 * radius) fillColor: Color black combinationRule: Form paint destOrigin: 0 @ 0 sourceOrigin: 0 @ 0 extent: radius * 2 @ (radius * 2) clipRect: blackDot boundingBox) colorMap: (Bitmap with: 0 with: 4294967295)) copyBits. blackDot displayOn: maskForm at: leftB @ topB. blackDot displayOn: maskForm at: maskForm width - rightB - (2 * radius) @ topB. blackDot displayOn: maskForm at: leftB @ (maskForm height - bottomB - (2 * radius)). blackDot displayOn: maskForm at: maskForm width - rightB - (2 * radius) @ (maskForm height - bottomB - (2 * radius)). inRect _ scaledForm boundingBox insetBy: radius. blackForm _ Form extent: inRect extent. blackForm fillColor: Color black. blackForm displayOn: maskForm at: leftB + radius @ (topB + radius). topForm _ Form extent: blackForm width @ radius. topForm fillBlack. topForm displayOn: maskForm at: leftB + radius @ topB. topForm displayOn: maskForm at: leftB + radius @ (maskForm height - bottomB - radius). leftForm _ Form extent: radius @ blackForm height. leftForm fillBlack. leftForm displayOn: maskForm at: leftB @ (topB + radius). leftForm displayOn: maskForm at: maskForm width - rightB - leftForm width @ (topB + radius). ^maskForm! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/31/2002 18:43'! dressUpThumbnailImage: form | scaledForm bRect resultForm sketch | scaledForm _ self class scaledFormFrom: form newExtent: 220 @ 160. bRect _ 8 @ 8 corner: 8 @ 8. resultForm _ self class whiteFormAround: scaledForm boundaries: bRect. sketch _ SketchMorph withForm: scaledForm. sketch cornerStyle: #rounded; position: 8 @ 8; addDropShadow; shadowColor: (Color black alpha: 0.3); fullDrawOn: resultForm getCanvas. ^ resultForm! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/31/2002 18:40'! dressUpThumbnailImageOldWay: form | scaledForm leftB topB rightB bottomB radius bRect newForm resultForm cornerBox ne se sw rightShadow xPos yPos count clip bottomShadow maskForm x y | scaledForm _ self class scaledFormFrom: form newExtent: 220 @ 160. leftB _ 8. topB _ 8. rightB _ 8. bottomB _ 8. radius _ 12. bRect _ leftB @ topB corner: rightB @ bottomB. newForm _ self class whiteFormAround: scaledForm boundaries: bRect. resultForm _ self class whiteFormAround: scaledForm boundaries: bRect. scaledForm displayOn: newForm at: leftB @ topB. cornerBox _ 0 @ 0 extent: leftB + radius @ (topB + radius). self adjustCornersOfForm: newForm cornerBox: cornerBox pictPoint: 0 @ 0 framePoint: leftB @ topB boxPoint: 0 @ 0 radius: radius. self adjustCornersOfForm: newForm cornerBox: cornerBox pictPoint: scaledForm width - (2 * radius) @ 0 framePoint: newForm width - rightB - (2 * radius) @ topB boxPoint: newForm width - cornerBox width @ 0 radius: radius. self adjustCornersOfForm: newForm cornerBox: cornerBox pictPoint: 0 @ (scaledForm height - (2 * radius)) framePoint: leftB @ (newForm height - bottomB - (2 * radius)) boxPoint: 0 @ (newForm height - cornerBox height) radius: radius. self adjustCornersOfForm: newForm cornerBox: cornerBox pictPoint: scaledForm width - (2 * radius) @ (scaledForm height - (2 * radius)) framePoint: newForm width - rightB - (2 * radius) @ (newForm height - bottomB - (2 * radius)) boxPoint: newForm width - cornerBox width @ (newForm height - cornerBox height) radius: radius. resultForm fillColor: Color white. ne _ self class boundaryForms at: 'ne'. se _ self class boundaryForms at: 'se'. sw _ self class boundaryForms at: 'sw'. rightShadow _ PhotoPublisher boundaryForms at: 'right'. xPos _ resultForm width - rightShadow width - 1. yPos _ ne height. count _ resultForm height // rightShadow height + 1. clip _ xPos - 1 @ yPos corner: resultForm boundingBox corner. count timesRepeat: [rightShadow displayOn: resultForm at: xPos @ yPos clippingBox: clip. yPos _ yPos + rightShadow height]. bottomShadow _ PhotoPublisher boundaryForms at: 'bottom'. xPos _ leftB. yPos _ resultForm height - bottomB - 1. count _ resultForm width // bottomShadow width + 1. clip _ xPos @ (yPos - 1) corner: resultForm boundingBox corner - 1 @ 0. count timesRepeat: [bottomShadow displayOn: resultForm at: xPos @ yPos clippingBox: clip. xPos _ xPos + bottomShadow width]. ne displayOn: resultForm at: resultForm width - ne width - 1 @ 2. se displayOn: resultForm at: resultForm width - se width - 1 @ (resultForm height - se height). sw displayOn: resultForm at: 2 @ (resultForm height - sw height). maskForm _ self drawMaskFormFrom: newForm scaledForm: scaledForm radius: radius boundariesRect: (leftB @ topB corner: rightB @ bottomB). 1 to: scaledForm width do: [:column | 1 to: scaledForm height do: [:row | x _ column + leftB - 1. y _ row + topB - 1. (maskForm pixelValueAt: x @ y) = 1 ifTrue: [resultForm colorAt: x @ y put: (scaledForm colorAt: column @ row)]]]. ^ resultForm! ! !PhotoPublisher methodsFor: 'forms' stamp: 'sbw 10/22/2002 22:17'! imageForFileNamed: aFileName | fName | fName _ self inputImagesFolder fullNameFor: aFileName. ^Form fromFileNamed: fName! ! !PhotoPublisher class methodsFor: 'utility' stamp: 'sbw 10/29/2002 22:04'! boundaryForms BoundaryForms == nil ifTrue: [self initializeBoundaryForms]. ^BoundaryForms! ! !PhotoPublisher class methodsFor: 'utility' stamp: 'sbw 10/29/2002 22:05'! initializeBoundaryForms BoundaryForms _ Dictionary new at: 'bottom' put: self bottomForm copy; at: 'sw' put: self swForm copy; at: 'nw' put: self nwForm copy; at: 'right' put: self rightForm copy; at: 'ne' put: self neForm copy; at: 'se' put: self seForm copy; yourself! ! !PhotoPublisher class methodsFor: 'utility' stamp: 'sbw 10/30/2002 06:34'! process ^self process: ''! ! !PhotoPublisher class methodsFor: 'utility' stamp: 'sbw 10/30/2002 06:33'! process: aString ^ self processReplaceThumbnails: false pageTitle: aString! ! !PhotoPublisher class methodsFor: 'utility' stamp: 'sbw 10/30/2002 06:32'! processFilesFrom: inputFolder exportTo: outputFolder replaceThumbnails: aBoolean pageTitle: aString ^ self new outputRootFolder: outputFolder; inputImagesFolder: inputFolder; replaceThumbnails: aBoolean; pageTitle: aString; process! ! !PhotoPublisher class methodsFor: 'utility' stamp: 'sbw 10/30/2002 06:32'! processReplaceThumbnails: aBoolean pageTitle: aString | outputDir inputDir | inputDir _ FileList2 modalFolderSelectorWithPrompt: 'Please select input folder.'. inputDir isNil ifTrue: [^ nil]. outputDir _ FileList2 modalFolderSelectorWithPrompt: 'Please select output folder.'. outputDir isNil ifTrue: [^ nil]. ^ self processFilesFrom: inputDir exportTo: outputDir replaceThumbnails: aBoolean pageTitle: aString! ! !PhotoPublisher class methodsFor: 'utility' stamp: 'sbw 10/28/2002 07:05'! scaledFormFrom: bigForm newExtent: newExtent | ptRatio div scaledExt | ptRatio _ bigForm extent / newExtent. div _ ptRatio x max: ptRatio y. scaledExt _ (bigForm extent / div) rounded. ^bigForm scaledToSize: scaledExt. ! ! !PhotoPublisher class methodsFor: 'utility' stamp: 'sbw 10/28/2002 07:10'! whiteFormAround: aForm boundaries: rect | newExtent newForm | newExtent _ aForm extent + rect origin + rect corner. newForm _ Form extent: newExtent depth: aForm depth. newForm fillWhite. ^newForm! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/29/2002 21:56'! bottomForm ^ Form extent: 15@8 depth: 32 fromArray: #( 4288585374 4288585374 4288585374 4288585374 4288585374 4288585374 4288585374 4288585374 4288650656 4288650656 4288650654 4288650654 4288650654 4288650654 4288650908 4289045925 4289045925 4289045925 4289045925 4289045925 4289045925 4289045925 4289045925 4289111207 4289111207 4289111205 4289111205 4289111205 4289111205 4289111459 4289835441 4289835441 4289835441 4289835441 4289835441 4289835441 4289835441 4289835441 4289835443 4289835443 4289900721 4289900721 4289900721 4289900721 4289900975 4291085508 4291085508 4291085508 4291085508 4291085508 4291085508 4291085508 4291085508 4291085510 4291085510 4291150788 4291150788 4291150788 4291150788 4291151042 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4292072403 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4293519849 4294111986 4294111986 4294111986 4294111986 4294111986 4294111986 4294111986 4294111986 4294111984 4294111984 4294111986 4294111986 4294111986 4294111986 4294111988 4294769916 4294769916 4294769916 4294769916 4294769916 4294769916 4294769916 4294769916 4294769914 4294769914 4294769916 4294769916 4294769916 4294769916 4294769918) offset: 0@0! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/22/2002 21:17'! leftArrowForm ^ (Form extent: 30@30 depth: 16 fromArray: #( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5285 346357760 0 0 0 0 0 0 0 0 0 0 0 0 0 415634597 346357760 0 0 0 0 0 0 0 0 0 0 0 0 6342 484904035 346357760 0 0 0 0 0 0 0 0 0 0 0 0 415635654 415635654 346357760 0 0 0 0 0 0 0 0 0 0 0 6342 346365159 761995528 207817827 207817827 207817827 207814656 0 0 0 0 0 0 0 0 415634597 554185100 900542860 554177701 207817827 207817827 554172416 0 0 0 0 0 0 0 6342 415640939 831273422 969816526 900542860 831270251 761992357 554172416 0 0 0 0 0 0 0 484908263 762000813 969816526 969816526 969816526 969816526 831264966 554172416 0 0 0 0 0 0 17969 1177633296 1039088078 969816526 969816526 969816526 969816526 831264966 554172416 0 0 0 0 0 0 0 1316184856 1454719504 969816526 969816526 969816526 969816526 831264966 554172416 0 0 0 0 0 0 0 20083 1731812054 1177632239 969816526 1039090192 1246906962 1108353288 554172416 0 0 0 0 0 0 0 0 1316186970 1593265779 1039089135 1108365972 1593271064 1593262608 554172416 0 0 0 0 0 0 0 0 20083 1801085720 1385447952 969826039 1593270007 1593270007 554172416 0 0 0 0 0 0 0 0 0 1316186970 1731809940 831258624 0 0 0 0 0 0 0 0 0 0 0 0 20083 1801085720 900530176 0 0 0 0 0 0 0 0 0 0 0 0 0 1316188027 1316159488 0 0 0 0 0 0 0 0 0 0 0 0 0 20083 1316159488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) offset: 57@486).! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/29/2002 22:00'! neForm ^Form extent: 28@45 depth: 32 fromArray: #( 4294704123 4294901502 4294901502 4294901502 4294966782 4294967039 4294967295 4294967295 4294967295 4294967295 4294967295 4294901503 4294901502 4294901502 4294966782 4294966782 4294901502 4294901502 4294966782 4294967039 4294967295 4294967295 4294967295 4294901759 4294901759 4294770687 4294967295 4294967295 4294901502 4294901502 4294901502 4294901502 4294966782 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294901503 4294835709 4294769916 4294637817 4294637817 4294638330 4294704123 4294769916 4294967295 4294967295 4294967295 4294967295 4294967295 4294901759 4294901759 4294967295 4294967295 4294901502 4294901502 4294835196 4294835196 4294769916 4294769916 4294769916 4294704636 4294704636 4294704636 4294769916 4294901502 4294901502 4294901502 4294966782 4294966782 4294835709 4294967295 4294967295 4294967295 4294967295 4294967295 4294901502 4294967295 4294901759 4294901759 4294967295 4294967295 4294901502 4294835709 4294637817 4294967295 4294967295 4294901759 4294901759 4294901759 4294901759 4294901759 4294901759 4294638330 4294769916 4294835709 4294900989 4294769916 4294572537 4294309365 4294112499 4294901759 4294967295 4294967295 4294967295 4294967295 4294901759 4294901759 4294967295 4294967295 4294704123 4294769916 4294769916 4294769916 4294704636 4294638843 4294704382 4294704382 4294573564 4294573564 4294704636 4294704636 4294835709 4294901502 4294967295 4294967295 4294967295 4294901759 4294967293 4294967293 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967293 4294704383 4294704383 4294704383 4294704383 4294507519 4294507519 4294507519 4294507519 4294442239 4294442239 4294507519 4294573311 4294704383 4294769919 4294638335 4294572537 4294507257 4294638843 4294704121 4294967293 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967293 4294243583 4293848831 4293519871 4293915391 4293915391 4293915391 4293915391 4293915391 4293850111 4293850111 4293915391 4293454847 4293849087 4294440959 4294704639 4294901759 4294901759 4294770429 4294441464 4294901759 4294901759 4294901759 4294901502 4294967295 4294967295 4294967295 4294967295 4294967295 4278913963 4278782891 4278913963 4278782891 4278782891 4278782891 4278717098 4278848684 4278782891 4278782891 4278782891 4278782891 4278783145 4278980500 4290230783 4292862207 4294244095 4294704639 4294770687 4294901759 4294901759 4294901759 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4278453474 4278322402 4278453474 4278322402 4278322402 4278322402 4278322402 4278322402 4278322402 4278322402 4278322402 4278322402 4278322402 4278453723 4278519756 4278782640 4289704703 4293191679 4294638847 4294770429 4294178292 4294638843 4294967295 4294967295 4294769916 4294901502 4294901502 4294901502 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190590 4278190590 4278190334 4278190334 4278190334 4278190334 4278190334 4278322153 4278651326 4278980749 4292664831 4294309887 4294441727 4294573050 4294835709 4294967295 4294967295 4294901502 4294901502 4294967295 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190588 4278190588 4278190334 4278190334 4278190334 4278256119 4278256360 4278716870 4279111566 4292533759 4294309887 4294507257 4294177779 4294901502 4294901502 4294704123 4294901502 4294967295 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190588 4278190588 4278190334 4278190334 4278190334 4278190334 4278190334 4278322153 4278716608 4289374975 4293059839 4294178292 4293914607 4294901502 4294835709 4294506744 4294901502 4294967295 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278256119 4278322153 4278782640 4290822649 4293586155 4293783021 4294900989 4294966782 4294506231 4294901502 4294967295 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190333 4278519756 4288388596 4292335599 4293585393 4294440438 4294637817 4294572024 4294901502 4294967295 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190333 4278190334 4278453723 4279046293 4290756607 4292993015 4293716715 4294177266 4294703610 4294901502 4294967295 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190333 4278190334 4278190334 4278453474 4278913961 4289704191 4292335350 4293124578 4293914094 4294835196 4294835709 4294967295 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913961 4289703679 4291545833 4292795867 4293519847 4294111984 4294769916 4294901502 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913961 4289243647 4291019489 4292269523 4293125089 4293980398 4294769916 4294901502 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913961 4288848895 4290361559 4291611850 4292730585 4293783019 4294704123 4294901502 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322402 4278913961 4288585724 4289967314 4291282885 4292467159 4293585640 4294506744 4294835709 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322402 4278913963 4288454654 4289836243 4291217605 4292401366 4293454054 4294309365 4294835709 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322402 4278913963 4288454654 4289770450 4291086535 4292336086 4293388261 4294177779 4294769916 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190588 4278322402 4278913963 4288323070 4289573073 4290889156 4292204500 4293322468 4294177779 4294835196 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190588 4278322402 4278782893 4288191484 4289310414 4290691779 4292138709 4293191395 4294308852 4294835196 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278256127 4278256609 4278717613 4288323327 4290099676 4290691779 4291875537 4293586153 4294045934 4294769657 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322403 4278717613 4287336947 4289244880 4290823878 4292007637 4293586153 4294243313 4294769657 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322403 4278652078 4287863036 4288981710 4291086796 4292007891 4293191393 4294309104 4294769655 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322403 4278652078 4288521727 4288653259 4291152589 4291876305 4292994014 4294440690 4294769655 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322403 4278652080 4288192767 4288455880 4291086796 4291942098 4293125600 4294638068 4294703861 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190333 4278257123 4278652080 4287929599 4289048017 4291218382 4292007891 4293191393 4294178030 4294769654 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278257123 4278586287 4287863807 4289574362 4290890187 4291942098 4293323234 4293849065 4294704374 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278257123 4278652080 4287469307 4289442778 4290298051 4291810258 4293783530 4294178288 4294704375 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278257123 4278652078 4287864063 4289376731 4290692557 4291942105 4293126120 4294178292 4294638843 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322403 4278652078 4287863806 4289245399 4290560971 4291942106 4293191913 4294309624 4294638589 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322403 4278652333 4287929084 4289244882 4290691526 4292138455 4293454056 4294440951 4294704123 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190333 4278190334 4278190334 4278322402 4278717611 4288191741 4289441487 4290822595 4292269269 4293519590 4294440438 4294769403 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322402 4278783145 4288454654 4289769423 4291085249 4292531666 4293650147 4294439922 4294900473 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913961 4288651517 4289966287 4291281858 4292597459 4293584354 4294308336 4294900473 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913963 4288584957 4289703629 4291281858 4292531923 4293518818 4294242543 4294900473 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913963 4288322298 4289637837 4291151042 4292466902 4293388004 4294111727 4294769657 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913963 4288519677 4289638096 4290953924 4292203991 4293388263 4294243572 4294704123 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322402 4278913963 4288388861 4289507282 4290888390 4292138457 4293322729 4294178038 4294704125 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322402 4278913963 4288388861 4289507282 4290757574 4292007641 4293191915 4294178040 4294638591 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913961 4288519677 4289507280 4290757574 4292007641 4293191915 4294178040 4294638589 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453474 4278913961 4288519931 4289703630 4290953924 4292138455 4293322729 4294178038 4294704123) offset: 0@0! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/29/2002 21:59'! nwForm ^Form extent: 16@16 depth: 32 fromArray: #( 4294835709 4294901502 4294967295 4294967295 4294901759 4294901759 4294967295 4294967295 4294901759 4294901759 4294901759 4294901759 4294901759 4294901759 4294705151 4294507773 4294901502 4294901502 4294967295 4294967295 4294901759 4294901759 4294967295 4294967295 4294836222 4294770429 4294572796 4294704382 4294901759 4294901759 4294705151 4294705151 4294901502 4294901502 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294770429 4294704636 4294770429 4294770429 4294638843 4294573050 4294901502 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294769916 4294835709 4294901759 4294901759 4294901759 4294836220 4294901759 4294901757 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967293 4294967293 4294835707 4294835707 4294769914 4294770168 4294638328 4294572789 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967293 4294967293 4294967293 4294769914 4294638330 4294704127 4294704639 4294769919 4294638591 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967293 4294967293 4294572535 4294704375 4294967291 4294901247 4294638591 4294441215 4294178047 4293783295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967293 4294967293 4294967291 4294967291 4294901247 4294769663 4294178047 4292467455 4279177095 4278979997 4278848166 4294835967 4294770175 4294967295 4294835709 4294901500 4294901500 4294967036 4294967034 4294835447 4294703871 4293980159 4278913959 4278651076 4278388182 4278453470 4278453474 4294901759 4294770175 4294967295 4294967295 4294769914 4294967293 4294967034 4294901247 4294638079 4293585151 4278913710 4278453724 4278190578 4278190333 4278190334 4278190334 4294901759 4294770429 4294901759 4294901759 4294638328 4294638328 4294967291 4294703871 4294177535 4278782894 4278519257 4278256371 4278190587 4278190334 4278190334 4278190334 4294901759 4294770429 4294836222 4294901759 4294704121 4294572537 4294901247 4294112255 4278913959 4278453724 4278256371 4278190334 4278190334 4278190334 4278190334 4278190334 4294901759 4294770429 4294573564 4294901759 4294769914 4294704127 4294638591 4292533247 4278651076 4278256371 4278190587 4278190334 4278190334 4278190334 4278190333 4278190333 4294836222 4294836222 4294638843 4294836220 4294835707 4294704639 4294440959 4279177095 4278519255 4278190334 4278190333 4278190334 4278190334 4278190334 4278190333 4278190334 4294639357 4294836222 4294573050 4294901500 4294769914 4294704127 4294243327 4279110813 4278453470 4278190334 4278190334 4278190334 4278190334 4278190333 4278190334 4278190334 4294705150 4294639357 4294572537 4294901500 4294638328 4294704127 4293651199 4278979495 4278453474 4278190334 4278190334 4278190334 4278190334 4278190334 4278256127 4278190334) offset: 0@0! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/22/2002 21:18'! rightArrowForm ^ (Form extent: 30@30 depth: 16 fromArray: #( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5285 346357760 0 0 0 0 0 0 0 0 0 0 0 0 0 5285 346364102 0 0 0 0 0 0 0 0 0 0 0 0 0 5285 207822055 415629312 0 0 0 0 0 0 0 0 0 0 0 0 5285 415635654 415635654 0 0 0 0 0 0 0 0 0 3171 207817827 207817827 207817827 554184043 484906149 415629312 0 0 0 0 0 0 0 0 8456 207817827 207817827 346366216 831272365 831267080 346364102 0 0 0 0 0 0 0 0 8456 346369387 761999756 831272365 969816526 969814412 761993414 415629312 0 0 0 0 0 0 0 8456 415641996 969816526 969816526 969816526 969816526 900541803 484908263 0 0 0 0 0 0 0 8456 415641996 969816526 969816526 969816526 969816526 969817583 1108362801 1177616384 0 0 0 0 0 0 8456 415641996 969816526 969816526 969816526 969816526 1108367029 1662537331 0 0 0 0 0 0 0 8456 554189328 1246906962 1108360687 969816526 1039091249 1524000569 1316159488 0 0 0 0 0 0 0 8456 1108369143 1662541559 1385447952 1039089135 1316183799 1801080435 0 0 0 0 0 0 0 0 8456 1593270007 1593270007 1593260494 1108365972 1662544730 1316159488 0 0 0 0 0 0 0 0 0 0 0 12684 1385457465 1801080435 0 0 0 0 0 0 0 0 0 0 0 0 13741 1662544730 1316159488 0 0 0 0 0 0 0 0 0 0 0 0 20083 1870351987 0 0 0 0 0 0 0 0 0 0 0 0 0 20083 1316159488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) offset: 33@488)! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/29/2002 22:00'! rightForm ^Form extent: 7@21 depth: 32 fromArray: #( 4289045925 4289901234 4291019715 4292269782 4293387750 4294177266 4294704123 4289111718 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289177511 4289901234 4290953922 4292203989 4293387750 4294308852 4294704123 4289243304 4289901234 4290888129 4292269782 4293453543 4294374645 4294704123 4289243304 4289901234 4290888129 4292269782 4293453543 4294374645 4294704123 4289177511 4289901234 4290953922 4292203989 4293387750 4294308852 4294704123 4289111718 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045925 4289901234 4291019715 4292269782 4293387750 4294177266 4294704123 4289045925 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045925 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045925 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045925 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045925 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045925 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045925 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045925 4289901234 4290953922 4292203989 4293387750 4294243059 4294704123 4289045927 4289901236 4291019204 4292269271 4293387752 4294243061 4294704123 4289045927 4289901236 4291019204 4292269271 4293387752 4294243061 4294704123 4289045927 4289901236 4291019204 4292269271 4293387752 4294243061 4294704123 4289045927 4289901236 4291019204 4292269271 4293387752 4294243061 4294704123 4289045927 4289901236 4291019204 4292269271 4293387752 4294243061 4294704123) offset: 0@0! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/29/2002 22:01'! seForm ^Form extent: 21@21 depth: 32 fromArray: #( 4278190334 4278190334 4278190590 4278190590 4278190590 4278190590 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278651077 4288651227 4289769900 4291217094 4292203989 4293454056 4293980400 4294704123 4278190334 4278190334 4278190590 4278190590 4278190590 4278190590 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278651077 4288585434 4289835693 4291217094 4292335575 4293651435 4294243572 4294704123 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190847 4278190590 4278190590 4278651077 4288651227 4289835693 4291085508 4291940817 4293256677 4293914607 4294704123 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190590 4278190590 4278190590 4278651077 4288848606 4289901486 4291151299 4292203989 4293585642 4293980400 4294704123 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278256127 4278190334 4278190334 4278190334 4278651077 4288717020 4289638314 4291019713 4291809229 4293717228 4294046193 4294704123 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190587 4278256371 4278716859 4288651480 4289572521 4291414471 4291611850 4293848814 4294111986 4294704123 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278256371 4278453470 4278914213 4288717010 4290032818 4292072655 4291677897 4293980398 4294046191 4294769916 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278322153 4278716606 4286809338 4288914377 4290032818 4292072655 4291743690 4293980398 4294111984 4294769916 4278256127 4278190334 4278190334 4278190334 4278255870 4278255870 4278190334 4278190334 4278190334 4278190334 4278190334 4278453723 4278980500 4288651237 4289111996 4289967025 4291546311 4291941069 4293849066 4294375410 4294835707 4278190334 4278190334 4278190334 4278190334 4278255870 4278255870 4278190334 4278190334 4278190334 4278322164 4278453470 4278782640 4287335906 4288980936 4289440693 4290427576 4291677643 4292730585 4293849066 4294441203 4294835707 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278453470 4278979744 4286677465 4288059582 4288651947 4289638323 4291020226 4292401366 4293651433 4293914605 4294309363 4294835707 4278453474 4278453474 4278453474 4278453474 4278453474 4278453474 4278387681 4278453723 4278650572 4278848420 4287204061 4288651203 4288848556 4289441194 4290428091 4291546572 4292598745 4293519847 4294243570 4294704121 4294967293 4278913961 4278913961 4278913963 4278848170 4278913961 4278913961 4278913963 4279111061 4286809051 4288453840 4288914367 4288585386 4289374638 4290032820 4291019715 4292072403 4292993505 4293848814 4294440951 4294769916 4294967295 4287664622 4287796208 4288059126 4288322298 4287796208 4287796208 4287664368 4288059102 4288651191 4289045925 4289177511 4289177511 4290230199 4290822336 4291809231 4292796126 4293585642 4294243572 4294638330 4294901502 4294967295 4288651455 4288585662 4288454076 4288388283 4289704143 4289112006 4288783041 4289111742 4289374900 4289374892 4289769648 4290361785 4291151301 4291743438 4292599260 4293454569 4294111986 4294572537 4294901502 4294967295 4294967295 4290164406 4290164406 4290164406 4289901234 4289638062 4289243304 4289374890 4290098613 4290427580 4290427580 4290888129 4291677645 4292138196 4292664540 4293322983 4293980913 4294506744 4294704123 4294835709 4294901502 4294967295 4291085508 4291151301 4291151301 4291019715 4292006610 4291348680 4290953922 4290953922 4291019715 4291085508 4291743438 4292730333 4292993505 4293454056 4293980400 4294440951 4294704123 4294769916 4294901502 4294901502 4294967295 4292335575 4292269782 4292203989 4292203989 4291809231 4292072403 4292532954 4292993505 4293059298 4293059298 4293190884 4293388263 4293783021 4294111986 4294506744 4294769916 4294901502 4294901502 4294967295 4294967295 4294967295 4293388263 4293322470 4293454056 4293519849 4293519849 4293651435 4293651435 4293322470 4293190884 4293585642 4294046193 4294243572 4294243572 4294440951 4294769916 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294111986 4294111986 4294111986 4294111986 4294243572 4294243572 4294243572 4294243572 4294309365 4294309365 4294506744 4294572537 4294835709 4294901502 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294769916 4294769916 4294769916 4294769916 4294572537 4294572537 4294572537 4294572537 4294638330 4294704123 4294769916 4294835709 4294835709 4294901502 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295) offset: 0@0! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/29/2002 21:58'! swForm ^Form extent: 23@16 depth: 32 fromArray: #( 4294967291 4294309617 4294901502 4294769916 4294901502 4294703871 4294506239 4279308156 4278519508 4278190334 4278190334 4278190333 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4294967291 4294309617 4294967295 4294967295 4294901502 4294572543 4294638079 4288848382 4278716356 4278256371 4278190587 4278190333 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4294967291 4294638069 4294967295 4294967295 4294901503 4294572285 4294966783 4292006399 4278979495 4278453724 4278256371 4278190334 4278190334 4278190334 4278190334 4278190333 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4294901241 4294901243 4294967295 4294967295 4294835711 4294704123 4294967293 4294111743 4287466993 4278913963 4278519257 4278190577 4278190587 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4294901500 4294967293 4294967295 4294835711 4294836222 4294901502 4294769657 4294835455 4292400878 4286479304 4278979243 4278519003 4278256370 4278190333 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4294967293 4294901502 4294967295 4294704125 4294836222 4294967295 4294440949 4294703861 4294506218 4292203497 4285492688 4278979495 4278650574 4278322153 4278256119 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4294901502 4294901502 4294967295 4294901502 4294901502 4294967295 4294967293 4294967291 4294111978 4293651437 4291282913 4287137739 4279045772 4278716860 4278322153 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4278190334 4294901502 4294901502 4294901502 4294901502 4294967295 4294967295 4294967293 4294967293 4294046445 4294572788 4294243564 4292007139 4288980453 4285691109 4278782894 4278716356 4278716610 4278781890 4278781890 4278781892 4278781892 4278716356 4278781892 4294901502 4294901502 4294967295 4294901502 4294967295 4294967295 4294967295 4294967293 4294440949 4294243824 4293454307 4292204502 4291415002 4290822624 4289769953 4288782807 4289110487 4288912594 4288649422 4288583375 4288714961 4288649940 4288649170 4294901502 4294901502 4294901502 4294901502 4294967295 4294967295 4294967295 4294967295 4294506742 4294375410 4293783273 4293125342 4292796375 4292467664 4291677637 4290887349 4290294183 4290030753 4289767069 4289504154 4289504156 4289438876 4289504158 4294967295 4294901502 4294901502 4294901502 4294967295 4294967295 4294967293 4294967293 4294704121 4294835961 4294770168 4294375409 4293651686 4292796375 4291677383 4290887351 4291544254 4291215289 4290820018 4290557359 4290359726 4290294703 4290359726 4294901502 4294901502 4294901502 4294901502 4294967295 4294967295 4294967293 4294967293 4294835707 4294769914 4294506996 4293980651 4293651686 4293454307 4293519587 4293519587 4292334287 4292071115 4291872966 4291413185 4291215806 4291018686 4291083966 4294901502 4294901502 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294835707 4294901500 4294901757 4294901755 4294704375 4294112238 4293454308 4293190623 4293255648 4293189855 4292991965 4292729306 4292466134 4292269269 4292466134 4294901502 4294901502 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967293 4294769914 4294506742 4294638328 4294769914 4294704375 4294441203 4294375156 4293979887 4293914096 4293979119 4293716717 4293519338 4293388265 4293650924 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294835709 4294967295 4294901502 4294967293 4294967293 4294901500 4294901500 4294835709 4294440953 4294440699 4294440442 4294374906 4294309113 4294243833 4294309113 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294835709 4294835709 4294900989 4294967039 4294967293 4294835707 4294901502 4294835709 4294769663 4294703871 4294638078 4294638078 4294507005 4294507005 4294572798) offset: 0@0! ! !PhotoPublisher class methodsFor: 'forms' stamp: 'sbw 10/22/2002 21:19'! upArrowForm ^ (Form extent: 30@30 depth: 16 fromArray: #( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 484918833 1316159488 0 0 0 0 0 0 0 0 0 0 0 0 6342 484917776 1662537331 0 0 0 0 0 0 0 0 0 0 0 0 415635654 762002927 1454729017 1316159488 0 0 0 0 0 0 0 0 0 0 6342 346369387 900544974 1108368086 1801080435 0 0 0 0 0 0 0 0 0 0 415634597 554185100 969816526 969819697 1593273178 1316159488 0 0 0 0 0 0 0 0 6342 415636711 831273422 969816526 969817583 1316184856 1801080435 0 0 0 0 0 0 0 0 415636711 415640939 900544974 969816526 969816526 1039094420 1731816282 1316159488 0 0 0 0 0 0 5285 346360931 415637768 831273422 969816526 969816526 1039090192 1385456408 1870351987 0 0 0 0 0 0 5285 346363045 346360931 554186157 969816526 969817583 1108359630 831272365 1316179571 0 0 0 0 0 0 0 0 3171 346370444 969816526 969818640 1385455351 0 0 0 0 0 0 0 0 0 0 3171 207827340 969816526 969820754 1593270007 0 0 0 0 0 0 0 0 0 0 3171 207826283 969816526 969820754 1662541559 0 0 0 0 0 0 0 0 0 0 3171 207826283 831271308 831275536 1593270007 0 0 0 0 0 0 0 0 0 0 3171 207819941 415635654 415637768 1108369143 0 0 0 0 0 0 0 0 0 0 3171 554180872 554180872 554180872 554180872 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) offset: 9@485)! ! !PhotoPublisher class methodsFor: 'constants' stamp: 'sbw 10/22/2002 19:32'! imagePagesFolderName ^'imagePages'! ! !PhotoPublisher class methodsFor: 'constants' stamp: 'sbw 10/22/2002 19:32'! imagesFolderName ^'images'! ! !PhotoPublisher class methodsFor: 'constants' stamp: 'sbw 10/22/2002 21:22'! leftArrowGIFName ^'left.gif'! ! !PhotoPublisher class methodsFor: 'constants' stamp: 'sbw 10/22/2002 21:22'! rightArrowGIFName ^ 'right.gif'! ! !PhotoPublisher class methodsFor: 'constants' stamp: 'sbw 10/22/2002 19:32'! thumbnailsFolderName ^'thumbs'! ! !PhotoPublisher class methodsFor: 'constants' stamp: 'sbw 10/22/2002 21:22'! upArrowGIFName ^ 'up.gif'! ! !PhotoPublisher class methodsFor: 'constants' stamp: 'sbw 10/22/2002 20:36'! validImageFileExtensions ^#('bmp' 'gif' 'jpg' 'png')! !