Skip to content

Commit

Permalink
optimise to fit everything in 640x256 window
Browse files Browse the repository at this point in the history
remove lots of tags that were set to the defaults
change code generation to use an array of librarys needed rather than a 32 bit set
add penmap object, bitmap object and slider object
add clicktab pages capability
make boingball.gadget optional
make cleanup able to handle error conditions without crashing
  • Loading branch information
dmcoles committed Nov 13, 2023
1 parent e8703fe commit 266c649
Show file tree
Hide file tree
Showing 40 changed files with 4,918 additions and 7,500 deletions.
568 changes: 228 additions & 340 deletions bevelObject.e

Large diffs are not rendered by default.

307 changes: 307 additions & 0 deletions bitmapObject.e
Original file line number Diff line number Diff line change
@@ -0,0 +1,307 @@
OPT MODULE, OSVERSION=37

MODULE 'reaction/reaction_macros',
'window','classes/window',
'gadgets/layout','layout',
'reaction/reaction_lib',
'button','gadgets/button',
'images/bevel',
'string',
'bitmap','images/bitmap',
'gadgets/integer','integer',
'gadgets/checkbox','checkbox',
'gadgets/getfile','getfile',
'images/label','label',
'amigalib/boopsi',
'libraries/gadtools',
'intuition/intuition',
'intuition/imageclass',
'intuition/gadgetclass'

MODULE '*reactionObject','*reactionForm','*sourceGen'

EXPORT ENUM BITMAPGAD_NAME, BITMAPGAD_LEFTEDGE, BITMAPGAD_TOPEDGE,
BITMAPGAD_WIDTH, BITMAPGAD_HEIGHT, BITMAPGAD_SOURCEFILE, BITMAPGAD_MASKING,
BITMAPGAD_OK, BITMAPGAD_CHILD, BITMAPGAD_CANCEL

CONST NUM_BITMAP_GADS=BITMAPGAD_CANCEL+1

EXPORT OBJECT bitmapObject OF reactionObject
leftEdge:INT
topEdge:INT
width:INT
height:INT
sourceFile[255]:ARRAY OF CHAR
masking:CHAR
ENDOBJECT

OBJECT bitmapSettingsForm OF reactionForm
bitmapObject:PTR TO bitmapObject
ENDOBJECT

PROC create() OF bitmapSettingsForm
DEF gads:PTR TO LONG

NEW gads[NUM_BITMAP_GADS]
self.gadgetList:=gads
NEW gads[NUM_BITMAP_GADS]
self.gadgetActions:=gads

self.windowObj:=WindowObject,
WA_TITLE, 'Bitmap Attribute Setting',
WA_LEFT, 0,
WA_TOP, 0,
WA_HEIGHT, 80,
WA_WIDTH, 150,
WA_MINWIDTH, 150,
WA_MAXWIDTH, 8192,
WA_MINHEIGHT, 80,
WA_MAXHEIGHT, 8192,
WA_ACTIVATE, TRUE,
WINDOW_POSITION, WPOS_CENTERSCREEN,
WA_PUBSCREEN, 0,
->WA_CustomScreen, gScreen,
->WINDOW_AppPort, gApp_port,
WA_CLOSEGADGET, TRUE,
WA_DEPTHGADGET, TRUE,
WA_SIZEGADGET, TRUE,
WA_DRAGBAR, TRUE,
WA_IDCMP,IDCMP_GADGETDOWN OR IDCMP_GADGETUP OR IDCMP_CLOSEWINDOW OR 0,

WINDOW_PARENTGROUP, VLayoutObject,
LAYOUT_SPACEOUTER, TRUE,
LAYOUT_DEFERLAYOUT, TRUE,

LAYOUT_ADDCHILD, LayoutObject,
LAYOUT_ORIENTATION, LAYOUT_ORIENT_HORIZ,

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_LEFTEDGE ]:=IntegerObject,
GA_ID, BITMAPGAD_LEFTEDGE,
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
INTEGER_MAXCHARS, 4,
INTEGER_MINIMUM, 0,
INTEGER_MAXIMUM, 9999,
IntegerEnd,
CHILD_LABEL, LabelObject,
LABEL_TEXT, '_LeftEdge',
LabelEnd,

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_TOPEDGE ]:=IntegerObject,
GA_ID, BITMAPGAD_TOPEDGE,
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
INTEGER_MAXCHARS, 4,
INTEGER_MINIMUM, 0,
INTEGER_MAXIMUM, 9999,
IntegerEnd,
CHILD_LABEL, LabelObject,
LABEL_TEXT, 'Top_Edge',
LabelEnd,
LayoutEnd,

LAYOUT_ADDCHILD, LayoutObject,
LAYOUT_ORIENTATION, LAYOUT_ORIENT_HORIZ,

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_WIDTH ]:=IntegerObject,
GA_ID, BITMAPGAD_WIDTH,
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
INTEGER_MAXCHARS, 4,
INTEGER_MINIMUM, 0,
INTEGER_MAXIMUM, 9999,
IntegerEnd,
CHILD_LABEL, LabelObject,
LABEL_TEXT, 'Width',
LabelEnd,

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_HEIGHT ]:=IntegerObject,
GA_ID, BITMAPGAD_HEIGHT,
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
INTEGER_MAXCHARS, 4,
INTEGER_MINIMUM, 0,
INTEGER_MAXIMUM, 9999,
IntegerEnd,
CHILD_LABEL, LabelObject,
LABEL_TEXT, 'Height',
LabelEnd,
LayoutEnd,

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_SOURCEFILE ]:=GetFileObject,
GA_ID, BITMAPGAD_SOURCEFILE,
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
GETFILE_TITLETEXT, 'Select your image file',
GETFILE_READONLY, FALSE,
TAG_DONE]),

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_MASKING ]:=CheckBoxObject,
GA_ID, BITMAPGAD_MASKING,
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
GA_TEXT, 'Masking',
CHECKBOX_TEXTPLACE, PLACETEXT_LEFT,
CheckBoxEnd,

LAYOUT_ADDCHILD, LayoutObject,
LAYOUT_ORIENTATION, LAYOUT_ORIENT_HORIZ,

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_OK ]:=ButtonObject,
GA_ID, BITMAPGAD_OK,
GA_TEXT, '_OK',
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
ButtonEnd,

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_CHILD ]:=ButtonObject,
GA_ID, BITMAPGAD_CHILD,
GA_TEXT, 'C_hild',
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
ButtonEnd,

LAYOUT_ADDCHILD, self.gadgetList[ BITMAPGAD_CANCEL ]:=ButtonObject,
GA_ID, BITMAPGAD_CANCEL,
GA_TEXT, '_Cancel',
GA_RELVERIFY, TRUE,
GA_TABCYCLE, TRUE,
ButtonEnd,
LayoutEnd,
LayoutEnd,
WindowEnd

self.gadgetActions[BITMAPGAD_CHILD]:={editChildSettings}
self.gadgetActions[BITMAPGAD_SOURCEFILE]:={triggerFileSelect}
self.gadgetActions[BITMAPGAD_CANCEL]:=MR_CANCEL
self.gadgetActions[BITMAPGAD_OK]:=MR_OK
ENDPROC

PROC triggerFileSelect(nself,gadget,id,code) OF bitmapSettingsForm
DEF win
self:=nself

win:=Gets(self.windowObj,WINDOW_WINDOW)

gfRequestFile(self.gadgetList[BITMAPGAD_SOURCEFILE],win)
ENDPROC

PROC editChildSettings(nself,gadget,id,code) OF bitmapSettingsForm
self:=nself
self.setBusy()
self.bitmapObject.editChildSettings()
self.clearBusy()
ENDPROC

PROC end() OF bitmapSettingsForm
END self.gadgetList[NUM_BITMAP_GADS]
END self.gadgetActions[NUM_BITMAP_GADS]
ENDPROC

PROC editSettings(comp:PTR TO bitmapObject) OF bitmapSettingsForm
DEF res

self.bitmapObject:=comp

SetGadgetAttrsA(self.gadgetList[ BITMAPGAD_SOURCEFILE ],0,0,[GETFILE_FULLFILE,comp.sourceFile,0])
SetGadgetAttrsA(self.gadgetList[ BITMAPGAD_LEFTEDGE ],0,0,[INTEGER_NUMBER,comp.leftEdge,0])
SetGadgetAttrsA(self.gadgetList[ BITMAPGAD_TOPEDGE ],0,0,[INTEGER_NUMBER,comp.topEdge,0])
SetGadgetAttrsA(self.gadgetList[ BITMAPGAD_WIDTH ],0,0,[INTEGER_NUMBER,comp.width,0])
SetGadgetAttrsA(self.gadgetList[ BITMAPGAD_HEIGHT ],0,0,[INTEGER_NUMBER,comp.height,0])
SetGadgetAttrsA(self.gadgetList[ BITMAPGAD_MASKING ],0,0,[CHECKBOX_CHECKED,comp.masking,0])

res:=self.showModal()
IF res=MR_OK
AstrCopy(comp.sourceFile,Gets(self.gadgetList[ BITMAPGAD_SOURCEFILE ],GETFILE_FULLFILE),255)
comp.leftEdge:=Gets(self.gadgetList[ BITMAPGAD_LEFTEDGE ],INTEGER_NUMBER)
comp.topEdge:=Gets(self.gadgetList[ BITMAPGAD_TOPEDGE ],INTEGER_NUMBER)
comp.width:=Gets(self.gadgetList[ BITMAPGAD_WIDTH ],INTEGER_NUMBER)
comp.height:=Gets(self.gadgetList[ BITMAPGAD_HEIGHT ],INTEGER_NUMBER)
comp.masking:=Gets(self.gadgetList[ BITMAPGAD_MASKING ],CHECKBOX_CHECKED)
ENDIF
ENDPROC res=MR_OK

EXPORT PROC createPreviewObject(scr) OF bitmapObject

self.previewObject:=BitMapObject,
IA_LEFT, self.leftEdge,
IA_TOP, self.topEdge,
IA_WIDTH, self.width,
IA_HEIGHT, self.height,
BITMAP_MASKING, self.masking,
BITMAP_SOURCEFILE, self.sourceFile,
BITMAP_SCREEN, scr,
->LABEL_DRAWINFO, self.drawInfo,
BitMapEnd

self.previewChildAttrs:=[
LAYOUT_MODIFYCHILD, self.previewObject,
CHILD_NOMINALSIZE, self.nominalSize,
CHILD_NODISPOSE, FALSE,
CHILD_MINWIDTH, self.minWidth,
CHILD_MINHEIGHT, self.minHeight,
CHILD_MAXWIDTH, self.maxWidth,
CHILD_MAXHEIGHT, self.maxHeight,
CHILD_WEIGHTEDWIDTH, self.weightedWidth,
CHILD_WEIGHTEDHEIGHT,self.weightedHeight,
CHILD_SCALEWIDTH, self.scaleWidth,
CHILD_SCALEHEIGHT, self.scaleHeight,
TAG_END]
ENDPROC

EXPORT PROC create(parent) OF bitmapObject
self.type:=TYPE_BOINGBALL
SUPER self.create(parent)
self.leftEdge:=0
self.topEdge:=0
self.width:=0
self.height:=0
self.masking:=FALSE
AstrCopy(self.sourceFile,'')
self.libsused:=[TYPE_BITMAP]
ENDPROC

EXPORT PROC editSettings() OF bitmapObject
DEF editForm:PTR TO bitmapSettingsForm
DEF res

NEW editForm.create()
res:=editForm.editSettings(self)
END editForm
ENDPROC res

#define makeProp(a,b) 'a',{self.a},b

EXPORT PROC serialiseData() OF bitmapObject IS
[
makeProp(leftEdge,FIELDTYPE_INT),
makeProp(topEdge,FIELDTYPE_INT),
makeProp(width,FIELDTYPE_INT),
makeProp(height,FIELDTYPE_INT),
makeProp(sourceFile,FIELDTYPE_STR),
makeProp(masking,FIELDTYPE_CHAR)
]

EXPORT PROC genCodeProperties(srcGen:PTR TO srcGen) OF bitmapObject

srcGen.componentPropertyInt('IA_Left',self.leftEdge)
srcGen.componentPropertyInt('IA_Top',self.topEdge)
srcGen.componentPropertyInt('IA_Width',self.width)
srcGen.componentPropertyInt('IA_Height',self.topEdge)

srcGen.componentProperty('BITMAP_Screen','gScreen',FALSE)
srcGen.componentProperty('BITMAP_SourceFile',self.sourceFile,TRUE)
IF self.masking THEN srcGen.componentProperty('BITMAP_Masking','TRUE',FALSE)
ENDPROC

EXPORT PROC getTypeName() OF bitmapObject
RETURN 'BitMap'
ENDPROC

EXPORT PROC isImage() OF bitmapObject IS TRUE

EXPORT PROC createBitmapObject(parent)
DEF bitmap:PTR TO bitmapObject

NEW bitmap.create(parent)
ENDPROC bitmap
Loading

0 comments on commit 266c649

Please sign in to comment.