home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 41
/
Amiga_Dream_41.iso
/
Amiga
/
Pro
/
3d
/
ICoons1_0.lzh
/
icoons
/
source
/
windows.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-11-20
|
30KB
|
861 lines
/*
* Source generated with GadToolsBox V1.4
* which is (c) Copyright 1991,92 Jaba Development
*/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/utility_protos.h>
#include <string.h>
#include "windows.h"
struct Screen *Scr = NULL;
APTR VisualInfo = NULL;
struct Window *MainWnd = NULL;
struct Window *KnotInfoWnd = NULL;
struct Window *ExpandedViewWnd = NULL;
struct Window *Scale_GroupWnd = NULL;
struct Window *Rotate_GroupWnd = NULL;
struct Window *Move_GroupWnd = NULL;
struct Window *ConfigWnd = NULL;
struct Gadget *MainGList = NULL;
struct Gadget *KnotInfoGList = NULL;
struct Gadget *ExpandedViewGList = NULL;
struct Gadget *Scale_GroupGList = NULL;
struct Gadget *Rotate_GroupGList = NULL;
struct Gadget *Move_GroupGList = NULL;
struct Gadget *ConfigGList = NULL;
struct Menu *MainMenus = NULL;
struct Gadget *MainGadgets[5];
struct Gadget *KnotInfoGadgets[10];
struct Gadget *ExpandedViewGadgets[2];
struct Gadget *Scale_GroupGadgets[5];
struct Gadget *Rotate_GroupGadgets[3];
struct Gadget *Move_GroupGadgets[4];
struct Gadget *ConfigGadgets[12];
UWORD MainLeft = 0;
UWORD MainTop = 1;
UWORD MainWidth = 640;
UWORD MainHeight = 244;
UWORD KnotInfoLeft = 379;
UWORD KnotInfoTop = 16;
UWORD KnotInfoWidth = 251;
UWORD KnotInfoHeight = 86;
UWORD ExpandedViewLeft = 0;
UWORD ExpandedViewTop = 0;
UWORD ExpandedViewWidth = 640;
UWORD ExpandedViewHeight = 245;
UWORD Scale_GroupLeft = 403;
UWORD Scale_GroupTop = 19;
UWORD Scale_GroupWidth = 230;
UWORD Scale_GroupHeight = 65;
UWORD Rotate_GroupLeft = 418;
UWORD Rotate_GroupTop = 22;
UWORD Rotate_GroupWidth = 221;
UWORD Rotate_GroupHeight = 64;
UWORD Move_GroupLeft = 482;
UWORD Move_GroupTop = 21;
UWORD Move_GroupWidth = 138;
UWORD Move_GroupHeight = 72;
UWORD ConfigLeft = 0;
UWORD ConfigTop = 1;
UWORD ConfigWidth = 640;
UWORD ConfigHeight = 244;
UBYTE *MainWdt = (UBYTE *)"Main Window";
UBYTE *KnotInfoWdt = (UBYTE *)"Knot Information";
UBYTE *ExpandedViewWdt = (UBYTE *)"ICoons";
UBYTE *Scale_GroupWdt = (UBYTE *)"Scale group";
UBYTE *Rotate_GroupWdt = (UBYTE *)"Rotate group";
UBYTE *Move_GroupWdt = (UBYTE *)"Move group";
UBYTE *ConfigWdt = (UBYTE *)"Configuration";
UBYTE *Rotate_Group_Axis4Labels[] = {
(UBYTE *)"Rotate around X",
(UBYTE *)"Rotate around Y",
(UBYTE *)"Rotate around Z",
NULL };
struct TextAttr topaz8 = {
( STRPTR )"topaz.font", 8, 0x00, 0x00 };
struct IntuiText ConfigIText[] = {
11, 1, JAM2,186, 2, &topaz8, (UBYTE *)" Configuration parameters: ", &ConfigIText[1],
4, 0, JAM1,80, 13, &topaz8, (UBYTE *)"Grid :", &ConfigIText[2],
4, 0, JAM1,236, 13, &topaz8, (UBYTE *)"Graphics :", &ConfigIText[3],
4, 0, JAM1,410, 13, &topaz8, (UBYTE *)"Interaction :", NULL };
struct NewMenu MainNewMenu[] = {
NM_TITLE, (STRPTR)"Project", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"About ...", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"New", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Load", NULL, 0, 0L, NULL,
NM_SUB, (STRPTR)"ICoons object", (STRPTR)"L", 0, 0L, NULL,
NM_SUB, (STRPTR)"JourneyMan object", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, NULL,
NM_ITEM, (STRPTR)"Generate", NULL, 0, 0L, NULL,
NM_SUB, (STRPTR)"TTDDD format", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Configuration", NULL, 0, 0L, NULL,
NM_SUB, (STRPTR)"Load ", NULL, 0, 0L, NULL,
NM_SUB, (STRPTR)"Save ", NULL, 0, 0L, NULL,
NM_SUB, (STRPTR)"Edit ", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, NULL,
NM_TITLE, (STRPTR)"Display", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Zoom in", (STRPTR)"I", 0, 0L, NULL,
NM_ITEM, (STRPTR)"Zoom out", (STRPTR)"O", 0, 0L, NULL,
NM_ITEM, (STRPTR)"Center", (STRPTR)"C", 0, 0L, NULL,
NM_ITEM, (STRPTR)"Rotate P.", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Pan (p)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Grid", NULL, CHECKIT|MENUTOGGLE, 0L, NULL,
NM_ITEM, (STRPTR)"Grid snap", NULL, CHECKIT|MENUTOGGLE, 0L, NULL,
NM_ITEM, (STRPTR)"Resolution", NULL, 0, 0L, NULL,
NM_SUB, (STRPTR)"Up (+)", NULL, 0, 0L, NULL,
NM_SUB, (STRPTR)"Down (-)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Redraw ( )", NULL, 0, 0L, NULL,
NM_TITLE, (STRPTR)"Windows", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Knot...", (STRPTR)"K", 0, 0L, NULL,
NM_ITEM, (STRPTR)"Scale...", (STRPTR)"Z", 0, 0L, NULL,
NM_ITEM, (STRPTR)"Rotate...", (STRPTR)"R", 0, 0L, NULL,
NM_ITEM, (STRPTR)"Move...", (STRPTR)"M", 0, 0L, NULL,
NM_TITLE, (STRPTR)"Render", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Mode", NULL, 0, 8L, NULL,
NM_SUB, (STRPTR)"Line", NULL, CHECKIT, 14L, NULL,
NM_SUB, (STRPTR)"Flat", NULL, CHECKIT, 13L, NULL,
NM_SUB, (STRPTR)"Gouraud", NULL, CHECKIT|CHECKED, 11L, NULL,
NM_SUB, (STRPTR)"Phong", NULL, CHECKIT, 7L, NULL,
NM_ITEM, (STRPTR)"Render (r)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Re-render(R)", NULL, 0, 0L, NULL,
NM_TITLE, (STRPTR)"Select", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Group box (g)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Group spline (,)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Group all (.)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Group knot (;)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Select next (n)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Deselect all (Ret)", NULL, 0, 0L, NULL,
NM_TITLE, (STRPTR)"Commands", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Add (a)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Combine (C)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Cut (c)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Delete (d)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Disconnect (D)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Hide (h)", NULL, 0, 0L, NULL,
NM_ITEM, (STRPTR)"Move origin", NULL, 0, 0L, NULL,
NM_END, NULL, NULL, 0, 0L, NULL };
UWORD MainGTypes[] = {
BUTTON_KIND,
BUTTON_KIND,
BUTTON_KIND,
BUTTON_KIND,
BUTTON_KIND
};
UWORD KnotInfoGTypes[] = {
BUTTON_KIND,
STRING_KIND,
BUTTON_KIND,
STRING_KIND,
BUTTON_KIND,
STRING_KIND,
NUMBER_KIND,
TEXT_KIND,
TEXT_KIND,
TEXT_KIND
};
UWORD ExpandedViewGTypes[] = {
BUTTON_KIND,
BUTTON_KIND
};
UWORD Scale_GroupGTypes[] = {
CHECKBOX_KIND,
CHECKBOX_KIND,
CHECKBOX_KIND,
BUTTON_KIND,
STRING_KIND
};
UWORD Rotate_GroupGTypes[] = {
MX_KIND,
BUTTON_KIND,
STRING_KIND
};
UWORD Move_GroupGTypes[] = {
STRING_KIND,
STRING_KIND,
STRING_KIND,
BUTTON_KIND
};
UWORD ConfigGTypes[] = {
STRING_KIND,
STRING_KIND,
INTEGER_KIND,
INTEGER_KIND,
INTEGER_KIND,
INTEGER_KIND,
INTEGER_KIND,
INTEGER_KIND,
INTEGER_KIND,
BUTTON_KIND,
BUTTON_KIND,
INTEGER_KIND
};
struct NewGadget MainNGad[] = {
0, 0, 17, 120, (UBYTE *)"Z", NULL, GD_G_Z_Expand, PLACETEXT_IN ,NULL, NULL,
0, 121, 17, 120, (UBYTE *)"Y", NULL, GD_G_Y_Expand, 0 ,NULL, NULL,
316, 0, 17, 104, (UBYTE *)"P", NULL, GD_G_Persp_Expand, PLACETEXT_IN ,NULL, NULL,
316, 121, 17, 120, (UBYTE *)"X", NULL, GD_G_X_Expand, 0 ,NULL, NULL,
316, 104, 17, 16, (UBYTE *)"R", NULL, GD_G_Persp_Rotate, PLACETEXT_IN ,NULL, NULL
};
struct NewGadget KnotInfoNGad[] = {
16, 35, 117, 13, (UBYTE *)"Tension", NULL, GD_G_Tension, PLACETEXT_IN ,NULL, NULL,
144, 35, 93, 13, NULL, NULL, GD_G_Tension_Value, 0 ,NULL, NULL,
16, 51, 117, 13, (UBYTE *)"Bias", NULL, GD_G_Bias, PLACETEXT_IN ,NULL, NULL,
144, 51, 93, 13, NULL, NULL, GD_G_Bias_Value, 0 ,NULL, NULL,
16, 67, 117, 13, (UBYTE *)"Continuity", NULL, GD_G_Continuity, PLACETEXT_IN ,NULL, NULL,
144, 67, 93, 13, NULL, NULL, GD_G_Continuity_Value, 0 ,NULL, NULL,
120, 2, 57, 13, (UBYTE *)"Point", NULL, GD_G_Point_Id, PLACETEXT_LEFT ,NULL, NULL,
60, 17, 57, 13, (UBYTE *)"Pos. ", NULL, GD_G_Knot_Pos_X, PLACETEXT_LEFT ,NULL, NULL,
120, 17, 57, 13, NULL, NULL, GD_G_Knot_Pos_Y, 0 ,NULL, NULL,
180, 17, 57, 13, NULL, NULL, GD_G_Knot_Pos_Z, 0 ,NULL, NULL
};
struct NewGadget ExpandedViewNGad[] = {
0, 0, 17, 212, (UBYTE *)"B", NULL, GD_G_Unexpand, PLACETEXT_IN ,NULL, NULL,
0, 212, 17, 30, (UBYTE *)"R", NULL, GD_G_Persp_Rotate_E, PLACETEXT_IN ,NULL, NULL
};
struct NewGadget Scale_GroupNGad[] = {
123, 3, 26, 11, (UBYTE *)"Scale X", NULL, GD_Scale_Group_X, PLACETEXT_LEFT ,NULL, NULL,
123, 17, 26, 11, (UBYTE *)"Scale Y", NULL, GD_Scale_Group_Y, PLACETEXT_LEFT ,NULL, NULL,
123, 31, 26, 11, (UBYTE *)"Scale Z", NULL, GD_Scale_Group_Z, PLACETEXT_LEFT ,NULL, NULL,
4, 45, 133, 13, (UBYTE *)"Scale factor", NULL, GD_Scale_Group_Factor, PLACETEXT_IN ,NULL, NULL,
144, 45, 73, 13, NULL, NULL, GD_Scale_Group_Factor_Value, 0 ,NULL, NULL
};
struct NewGadget Rotate_GroupNGad[] = {
164, 3, 17, 9, NULL, NULL, GD_Rotate_Group_Axis, PLACETEXT_LEFT ,NULL, NULL,
8, 45, 109, 13, (UBYTE *)"Angle", NULL, GD_Rotate_Group_Angle, PLACETEXT_IN ,NULL, NULL,
124, 45, 85, 13, NULL, NULL, GD_Rotate_Group_Angle_Value, 0 ,NULL, NULL
};
struct NewGadget Move_GroupNGad[] = {
32, 3, 89, 13, (UBYTE *)"X", NULL, GD_Move_Group_X_Value, PLACETEXT_LEFT ,NULL, NULL,
32, 19, 89, 13, (UBYTE *)"Y", NULL, GD_Move_Group_Y_Value, PLACETEXT_LEFT ,NULL, NULL,
32, 35, 89, 13, (UBYTE *)"Z", NULL, GD_Move_Group_Z_Value, PLACETEXT_LEFT ,NULL, NULL,
12, 53, 109, 13, (UBYTE *)"Move", NULL, GD_Move_Group_Move, PLACETEXT_IN ,NULL, NULL
};
struct NewGadget ConfigNGad[] = {
98, 25, 67, 14, (UBYTE *)"Grid size", NULL, GD_Grid_Size_Value, PLACETEXT_LEFT ,NULL, NULL,
464, 25, 71, 14, (UBYTE *)"Draw delay", NULL, GD_Delay_Draw_Value, PLACETEXT_LEFT ,NULL, NULL,
284, 25, 48, 14, (UBYTE *)"Spl. resol. ", NULL, GD_Spline_Resolution_Value, PLACETEXT_LEFT ,NULL, NULL,
464, 45, 48, 14, (UBYTE *)"Knot", NULL, GD_MQ_Size_KnotInfo_Value, PLACETEXT_LEFT ,NULL, NULL,
464, 66, 48, 14, (UBYTE *)"Rot. Persp.", NULL, GD_MQ_Size_Rotate_P_Value, PLACETEXT_LEFT ,NULL, NULL,
464, 87, 48, 14, (UBYTE *)"Rot. group ", NULL, GD_MQ_Size_Rotate_G_Value, PLACETEXT_LEFT ,NULL, NULL,
464, 108, 48, 14, (UBYTE *)"Scale group", NULL, GD_MQ_Size_Scale_G_Value, PLACETEXT_LEFT ,NULL, NULL,
464, 129, 48, 14, (UBYTE *)"Move group", NULL, GD_MQ_Size_Move_G_Value, PLACETEXT_LEFT ,NULL, NULL,
464, 150, 48, 14, (UBYTE *)"Move", NULL, GD_MQ_Size_Move_Value, PLACETEXT_LEFT ,NULL, NULL,
0, 169, 315, 15, (UBYTE *)"Ok", NULL, GD_Config_Ok, PLACETEXT_IN ,NULL, NULL,
317, 169, 315, 15, (UBYTE *)"Cancel", NULL, GD_Config_Cancel, PLACETEXT_IN ,NULL, NULL,
284, 46, 48, 14, (UBYTE *)"Patch resol.", NULL, GD_Patch_Resolution_Value, PLACETEXT_LEFT ,NULL, NULL
};
ULONG MainGTags[] = {
(TAG_DONE),
(TAG_DONE),
(TAG_DONE),
(TAG_DONE),
(TAG_DONE)
};
ULONG KnotInfoGTags[] = {
(TAG_DONE),
(GTST_String), (ULONG)"0", (GTST_MaxChars), 10, (TAG_DONE),
(TAG_DONE),
(GTST_String), (ULONG)"0", (GTST_MaxChars), 10, (TAG_DONE),
(TAG_DONE),
(GTST_String), (ULONG)"0", (GTST_MaxChars), 10, (TAG_DONE),
(GTNM_Number), -1, (GTNM_Border), TRUE, (TAG_DONE),
(GTTX_Text), (ULONG)"0.0", (GTTX_Border), TRUE, (TAG_DONE),
(GTTX_Text), (ULONG)"0.0", (GTTX_Border), TRUE, (TAG_DONE),
(GTTX_Text), (ULONG)"0.0", (GTTX_Border), TRUE, (TAG_DONE)
};
ULONG ExpandedViewGTags[] = {
(TAG_DONE),
(TAG_DONE)
};
ULONG Scale_GroupGTags[] = {
(GTCB_Checked), TRUE, (TAG_DONE),
(GTCB_Checked), TRUE, (TAG_DONE),
(GTCB_Checked), TRUE, (TAG_DONE),
(TAG_DONE),
(GTST_String), (ULONG)"1.0", (GTST_MaxChars), 10, (TAG_DONE)
};
ULONG Rotate_GroupGTags[] = {
(GTMX_Labels), (ULONG)&Rotate_Group_Axis4Labels[ 0 ], (TAG_DONE),
(TAG_DONE),
(GTST_String), (ULONG)"0.0", (GTST_MaxChars), 10, (TAG_DONE)
};
ULONG Move_GroupGTags[] = {
(GTST_String), (ULONG)"0.0", (GTST_MaxChars), 10, (TAG_DONE),
(GTST_String), (ULONG)"0.0", (GTST_MaxChars), 10, (TAG_DONE),
(GTST_String), (ULONG)"0.0", (GTST_MaxChars), 10, (TAG_DONE),
(TAG_DONE)
};
ULONG ConfigGTags[] = {
(GTST_String), (ULONG)"20.0", (GTST_MaxChars), 10, (TAG_DONE),
(GTST_String), (ULONG)"0.5", (GTST_MaxChars), 10, (TAG_DONE),
(GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
(GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
(GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
(GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
(GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
(GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE),
(GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
(TAG_DONE),
(TAG_DONE),
(GTIN_Number), 4, (GTIN_MaxChars), 10, (TAG_DONE)
};
struct ColorSpec ScreenColors[] = {
0, 0x02, 0x02, 0x02,
1, 0x07, 0x07, 0x07,
2, 0x0A, 0x0A, 0x0A,
3, 0x06, 0x08, 0x0B,
4, 0x0F, 0x00, 0x00,
5, 0x0F, 0x0F, 0x00,
6, 0x00, 0x0F, 0x00,
7, 0x0D, 0x07, 0x06,
8, 0x0C, 0x05, 0x0C,
9, 0x0E, 0x05, 0x00,
10, 0x09, 0x0F, 0x01,
11, 0x0F, 0x0F, 0x06,
12, 0x05, 0x05, 0x0F,
13, 0x09, 0x02, 0x0F,
14, 0x00, 0x0F, 0x08,
15, 0x0C, 0x0C, 0x0C,
~0, 0x00, 0x00, 0x00 };
UWORD DriPens[] = {
2,3,11,2,1,3,5,1,4,~0 };
int SetupScreen( void )
{
if ( ! ( Scr = OpenScreenTags( NULL, SA_Left, 0,
SA_Top, 0,
SA_Width, 640,
SA_Height, 256,
SA_Depth, 4,
SA_Colors, &ScreenColors[0],
SA_Font, &topaz8,
SA_Type, CUSTOMSCREEN,
SA_DisplayID, PAL_MONITOR_ID|HIRES_KEY,
SA_Pens, &DriPens[0],
SA_Title, "ICoons",
TAG_DONE )))
return( 1L );
if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
return( 2L );
return( 0L );
}
void CloseDownScreen( void )
{
if ( VisualInfo ) {
FreeVisualInfo( VisualInfo );
VisualInfo = NULL;
}
if ( Scr ) {
CloseScreen( Scr );
Scr = NULL;
}
}
void MainRender( void )
{
UWORD offx, offy;
offx = MainWnd->BorderLeft;
offy = MainWnd->BorderTop;
DrawBevelBox( MainWnd->RPort, offx + 335, offy + 121, 296, 120, GT_VisualInfo, VisualInfo, TAG_DONE );
DrawBevelBox( MainWnd->RPort, offx + 334, offy + 0, 297, 120, GT_VisualInfo, VisualInfo, TAG_DONE );
DrawBevelBox( MainWnd->RPort, offx + 18, offy + 0, 297, 120, GT_VisualInfo, VisualInfo, TAG_DONE );
DrawBevelBox( MainWnd->RPort, offx + 18, offy + 121, 297, 120, GT_VisualInfo, VisualInfo, TAG_DONE );
}
int OpenMainWindow( void )
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc, tc;
UWORD offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
if ( ! ( g = CreateContext( &MainGList )))
return( 1L );
for( lc = 0, tc = 0; lc < Main_CNT; lc++ ) {
CopyMem((char * )&MainNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
ng.ng_VisualInfo = VisualInfo;
ng.ng_TextAttr = &topaz8;
ng.ng_LeftEdge += offx;
ng.ng_TopEdge += offy;
MainGadgets[ lc ] = g = CreateGadgetA((ULONG)MainGTypes[ lc ], g, &ng, ( struct TagItem * )&MainGTags[ tc ] );
while( MainGTags[ tc ] ) tc += 2;
tc++;
if ( NOT g )
return( 2L );
}
if ( ! ( MainMenus = CreateMenus( MainNewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
return( 3L );
LayoutMenus( MainMenus, VisualInfo, GTMN_TextAttr, &topaz8, TAG_DONE );
if ( ! ( MainWnd = OpenWindowTags( NULL,
WA_Left, MainLeft,
WA_Top, MainTop,
WA_Width, MainWidth,
WA_Height, MainHeight + offy,
WA_IDCMP, BUTTONIDCMP|IDCMP_GADGETDOWN|IDCMP_INTUITICKS|IDCMP_MOUSEMOVE|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_REPORTMOUSE|WFLG_ACTIVATE,
WA_Gadgets, MainGList,
WA_Title, MainWdt,
WA_ScreenTitle, "ICoons",
WA_CustomScreen, Scr,
TAG_DONE )))
return( 4L );
SetMenuStrip( MainWnd, MainMenus );
GT_RefreshWindow( MainWnd, NULL );
MainRender();
return( 0L );
}
void CloseMainWindow( void )
{
if ( MainMenus ) {
ClearMenuStrip( MainWnd );
FreeMenus( MainMenus );
MainMenus = NULL; }
if ( MainWnd ) {
CloseWindow( MainWnd );
MainWnd = NULL;
}
if ( MainGList ) {
FreeGadgets( MainGList );
MainGList = NULL;
}
}
int OpenKnotInfoWindow( void )
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc, tc;
UWORD offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
if ( ! ( g = CreateContext( &KnotInfoGList )))
return( 1L );
for( lc = 0, tc = 0; lc < KnotInfo_CNT; lc++ ) {
CopyMem((char * )&KnotInfoNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
ng.ng_VisualInfo = VisualInfo;
ng.ng_TextAttr = &topaz8;
ng.ng_LeftEdge += offx;
ng.ng_TopEdge += offy;
KnotInfoGadgets[ lc ] = g = CreateGadgetA((ULONG)KnotInfoGTypes[ lc ], g, &ng, ( struct TagItem * )&KnotInfoGTags[ tc ] );
while( KnotInfoGTags[ tc ] ) tc += 2;
tc++;
if ( NOT g )
return( 2L );
}
if ( ! ( KnotInfoWnd = OpenWindowTags( NULL,
WA_Left, KnotInfoLeft,
WA_Top, KnotInfoTop,
WA_Width, KnotInfoWidth,
WA_Height, KnotInfoHeight + offy,
WA_IDCMP, BUTTONIDCMP|STRINGIDCMP|NUMBERIDCMP|TEXTIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
WA_Gadgets, KnotInfoGList,
WA_Title, KnotInfoWdt,
WA_ScreenTitle, "ICoons",
WA_CustomScreen, Scr,
TAG_DONE )))
return( 4L );
GT_RefreshWindow( KnotInfoWnd, NULL );
return( 0L );
}
void CloseKnotInfoWindow( void )
{
if ( KnotInfoWnd ) {
CloseWindow( KnotInfoWnd );
KnotInfoWnd = NULL;
}
if ( KnotInfoGList ) {
FreeGadgets( KnotInfoGList );
KnotInfoGList = NULL;
}
}
int OpenExpandedViewWindow( void )
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc, tc;
UWORD offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
if ( ! ( g = CreateContext( &ExpandedViewGList )))
return( 1L );
for( lc = 0, tc = 0; lc < ExpandedView_CNT; lc++ ) {
CopyMem((char * )&ExpandedViewNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
ng.ng_VisualInfo = VisualInfo;
ng.ng_TextAttr = &topaz8;
ng.ng_LeftEdge += offx;
ng.ng_TopEdge += offy;
ExpandedViewGadgets[ lc ] = g = CreateGadgetA((ULONG)ExpandedViewGTypes[ lc ], g, &ng, ( struct TagItem * )&ExpandedViewGTags[ tc ] );
while( ExpandedViewGTags[ tc ] ) tc += 2;
tc++;
if ( NOT g )
return( 2L );
}
if ( ! ( ExpandedViewWnd = OpenWindowTags( NULL,
WA_Left, ExpandedViewLeft,
WA_Top, ExpandedViewTop,
WA_Width, ExpandedViewWidth,
WA_Height, ExpandedViewHeight + offy,
WA_IDCMP, BUTTONIDCMP|IDCMP_INTUITICKS|IDCMP_MOUSEMOVE|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_REPORTMOUSE|WFLG_ACTIVATE,
WA_Gadgets, ExpandedViewGList,
WA_Title, ExpandedViewWdt,
WA_ScreenTitle, "ICoons",
WA_CustomScreen, Scr,
TAG_DONE )))
return( 4L );
GT_RefreshWindow( ExpandedViewWnd, NULL );
return( 0L );
}
void CloseExpandedViewWindow( void )
{
if ( ExpandedViewWnd ) {
CloseWindow( ExpandedViewWnd );
ExpandedViewWnd = NULL;
}
if ( ExpandedViewGList ) {
FreeGadgets( ExpandedViewGList );
ExpandedViewGList = NULL;
}
}
int OpenScale_GroupWindow( void )
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc, tc;
UWORD offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
if ( ! ( g = CreateContext( &Scale_GroupGList )))
return( 1L );
for( lc = 0, tc = 0; lc < Scale_Group_CNT; lc++ ) {
CopyMem((char * )&Scale_GroupNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
ng.ng_VisualInfo = VisualInfo;
ng.ng_TextAttr = &topaz8;
ng.ng_LeftEdge += offx;
ng.ng_TopEdge += offy;
Scale_GroupGadgets[ lc ] = g = CreateGadgetA((ULONG)Scale_GroupGTypes[ lc ], g, &ng, ( struct TagItem * )&Scale_GroupGTags[ tc ] );
while( Scale_GroupGTags[ tc ] ) tc += 2;
tc++;
if ( NOT g )
return( 2L );
}
if ( ! ( Scale_GroupWnd = OpenWindowTags( NULL,
WA_Left, Scale_GroupLeft,
WA_Top, Scale_GroupTop,
WA_Width, Scale_GroupWidth,
WA_Height, Scale_GroupHeight + offy,
WA_IDCMP, CHECKBOXIDCMP|BUTTONIDCMP|STRINGIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
WA_Gadgets, Scale_GroupGList,
WA_Title, Scale_GroupWdt,
WA_ScreenTitle, "ICoons",
WA_CustomScreen, Scr,
TAG_DONE )))
return( 4L );
GT_RefreshWindow( Scale_GroupWnd, NULL );
return( 0L );
}
void CloseScale_GroupWindow( void )
{
if ( Scale_GroupWnd ) {
CloseWindow( Scale_GroupWnd );
Scale_GroupWnd = NULL;
}
if ( Scale_GroupGList ) {
FreeGadgets( Scale_GroupGList );
Scale_GroupGList = NULL;
}
}
int OpenRotate_GroupWindow( void )
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc, tc;
UWORD offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
if ( ! ( g = CreateContext( &Rotate_GroupGList )))
return( 1L );
for( lc = 0, tc = 0; lc < Rotate_Group_CNT; lc++ ) {
CopyMem((char * )&Rotate_GroupNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
ng.ng_VisualInfo = VisualInfo;
ng.ng_TextAttr = &topaz8;
ng.ng_LeftEdge += offx;
ng.ng_TopEdge += offy;
Rotate_GroupGadgets[ lc ] = g = CreateGadgetA((ULONG)Rotate_GroupGTypes[ lc ], g, &ng, ( struct TagItem * )&Rotate_GroupGTags[ tc ] );
while( Rotate_GroupGTags[ tc ] ) tc += 2;
tc++;
if ( NOT g )
return( 2L );
}
if ( ! ( Rotate_GroupWnd = OpenWindowTags( NULL,
WA_Left, Rotate_GroupLeft,
WA_Top, Rotate_GroupTop,
WA_Width, Rotate_GroupWidth,
WA_Height, Rotate_GroupHeight + offy,
WA_IDCMP, MXIDCMP|BUTTONIDCMP|STRINGIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
WA_Gadgets, Rotate_GroupGList,
WA_Title, Rotate_GroupWdt,
WA_ScreenTitle, "ICoons",
WA_CustomScreen, Scr,
TAG_DONE )))
return( 4L );
GT_RefreshWindow( Rotate_GroupWnd, NULL );
return( 0L );
}
void CloseRotate_GroupWindow( void )
{
if ( Rotate_GroupWnd ) {
CloseWindow( Rotate_GroupWnd );
Rotate_GroupWnd = NULL;
}
if ( Rotate_GroupGList ) {
FreeGadgets( Rotate_GroupGList );
Rotate_GroupGList = NULL;
}
}
int OpenMove_GroupWindow( void )
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc, tc;
UWORD offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
if ( ! ( g = CreateContext( &Move_GroupGList )))
return( 1L );
for( lc = 0, tc = 0; lc < Move_Group_CNT; lc++ ) {
CopyMem((char * )&Move_GroupNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
ng.ng_VisualInfo = VisualInfo;
ng.ng_TextAttr = &topaz8;
ng.ng_LeftEdge += offx;
ng.ng_TopEdge += offy;
Move_GroupGadgets[ lc ] = g = CreateGadgetA((ULONG)Move_GroupGTypes[ lc ], g, &ng, ( struct TagItem * )&Move_GroupGTags[ tc ] );
while( Move_GroupGTags[ tc ] ) tc += 2;
tc++;
if ( NOT g )
return( 2L );
}
if ( ! ( Move_GroupWnd = OpenWindowTags( NULL,
WA_Left, Move_GroupLeft,
WA_Top, Move_GroupTop,
WA_Width, Move_GroupWidth,
WA_Height, Move_GroupHeight + offy,
WA_IDCMP, STRINGIDCMP|BUTTONIDCMP|IDCMP_GADGETDOWN|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
WA_Gadgets, Move_GroupGList,
WA_Title, Move_GroupWdt,
WA_ScreenTitle, "ICoons",
WA_CustomScreen, Scr,
TAG_DONE )))
return( 4L );
GT_RefreshWindow( Move_GroupWnd, NULL );
return( 0L );
}
void CloseMove_GroupWindow( void )
{
if ( Move_GroupWnd ) {
CloseWindow( Move_GroupWnd );
Move_GroupWnd = NULL;
}
if ( Move_GroupGList ) {
FreeGadgets( Move_GroupGList );
Move_GroupGList = NULL;
}
}
void ConfigRender( void )
{
UWORD offx, offy;
offx = ConfigWnd->BorderLeft;
offy = ConfigWnd->BorderTop;
PrintIText( ConfigWnd->RPort, ConfigIText, offx, offy );
DrawBevelBox( ConfigWnd->RPort, offx + 184, offy + 1, 250, 10, GT_VisualInfo, VisualInfo, TAG_DONE );
}
int OpenConfigWindow( void )
{
struct NewGadget ng;
struct Gadget *g;
UWORD lc, tc;
UWORD offx = Scr->WBorLeft,offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
if ( ! ( g = CreateContext( &ConfigGList )))
return( 1L );
for( lc = 0, tc = 0; lc < Config_CNT; lc++ ) {
CopyMem((char * )&ConfigNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
ng.ng_VisualInfo = VisualInfo;
ng.ng_TextAttr = &topaz8;
ng.ng_LeftEdge += offx;
ng.ng_TopEdge += offy;
ConfigGadgets[ lc ] = g = CreateGadgetA((ULONG)ConfigGTypes[ lc ], g, &ng, ( struct TagItem * )&ConfigGTags[ tc ] );
while( ConfigGTags[ tc ] ) tc += 2;
tc++;
if ( NOT g )
return( 2L );
}
if ( ! ( ConfigWnd = OpenWindowTags( NULL,
WA_Left, ConfigLeft,
WA_Top, ConfigTop,
WA_Width, ConfigWidth,
WA_Height, ConfigHeight + offy,
WA_IDCMP, STRINGIDCMP|INTEGERIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_SMART_REFRESH|WFLG_ACTIVATE,
WA_Gadgets, ConfigGList,
WA_Title, ConfigWdt,
WA_ScreenTitle, "ICoons",
WA_CustomScreen, Scr,
TAG_DONE )))
return( 4L );
GT_RefreshWindow( ConfigWnd, NULL );
ConfigRender();
return( 0L );
}
void CloseConfigWindow( void )
{
if ( ConfigWnd ) {
CloseWindow( ConfigWnd );
ConfigWnd = NULL;
}
if ( ConfigGList ) {
FreeGadgets( ConfigGList );
ConfigGList = NULL;
}
}