コード例 #1
0
ファイル: DEMO.C プロジェクト: eviltester/gem-guitar-tools
void nag_about(int time)
{

		OBJECT *dlog;	
		short x,y,w,h;

#ifdef DEMO

	Crsrc_gaddr(R_TREE,NAG_SCREEN,&dlog);
	set_tedinfo(dlog,Please_Wait_Butt,"Please Wait");

	form_center(dlog,&x,&y,&w,&h);
	form_dial(FMD_START,0,0,0,0,x,y,w,h);
	objc_draw(dlog,0,10,x,y,w,h);

	/*pause for supplied time_value*/

	set_tedinfo(dlog,Please_Wait_Butt," OK ");
	objc_draw(dlog,0,10,x,y,w,h);

	/* handle form */
	handle_dialog(dlog,0,0);

	set_tedinfo(dlog,Please_Wait_Butt,"Please Wait");
	form_dial(FMD_FINISH,0,0,0,0,x,y,w,h);

#endif
}
コード例 #2
0
ファイル: LOGCTRL.C プロジェクト: daemqn/Atari_ST_Sources
void  gem_prgm()

{
   OBJECT  *tree;
   int     box_x, box_y, box_w, box_h, button, end = FALSE;
   int     work_in[11], work_out[57], count, dummy;

   for (count = 0; count < 10; count++)   work_in[count] = 1;
   work_in[10] = 2;
   vdi_handle = graf_handle (& dummy, & dummy, & dummy, & dummy);
   v_opnvwk (work_in, & vdi_handle, work_out);
   vq_extnd (vdi_handle, 1, work_out);
   planes = work_out[4];

   rsrc_gaddr (R_TREE, LOGCTRL, & tree);
   form_center (tree, & box_x, & box_y, & box_w, & box_h);
   form_dial (FMD_START, 0,0,0,0, box_x, box_y, box_w, box_h);
   objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h);

   do {
        button = form_do (tree, 0) & 0x7fffu;
        evnt_timer (60, 0);
        tree[button].ob_state &= ~SELECTED;
        objc_draw (tree, button, 1, box_x, box_y, box_w, box_h);

        switch (button) {
           case FILENAM :
             modify_fname();
             objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h);
             break;
           case CLIENT :
           case MODULE :
             form_dial (FMD_FINISH, 0,0,0,0, box_x, box_y, box_w, box_h);
             do_dialog ((button == CLIENT) ? CLI_API : MOD_API);
             form_dial (FMD_START, 0,0,0,0, box_x, box_y, box_w, box_h);
             objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h);
             break;
           case TERM :
             if (form_alert (1, "[2][ |  Remove LogSTinG and   |   leave LogCTRL ?][ Yes | No ]") == 1) {
                  if ((long) (*sting_drivers->get_dftab) ("LOGSTING : REMOVE") == 'OkOk')
                       end = TRUE;
                    else
                       form_alert (1, "[1][ |  Could not remove LogSTinG !  ][ Hmmm ]");
                }
             break;
           case FIX :
             if (form_alert (1, "[2][ |  Activate new settings ?   ][ Yes | No ]") == 1)
                  do_settings();
             break;
           case CANCEL :
             if (form_alert (1, "[2][ |  Leave LogCTRL ?   ][ Yes | No ]") == 1)
                  end = TRUE;
             break;
           }
     } while (! end);

   form_dial (FMD_FINISH, 0,0,0,0, box_x, box_y, box_w, box_h);
   v_clsvwk (vdi_handle);
 }
コード例 #3
0
ファイル: gencoup.c プロジェクト: daemqn/Atari_ST_Sources
void  select_progeny( short prog_num, GRECT box )
{
	int prog ;					/* progeny reference					*/
	char names[IDX_NAM_MAX*2 + DATE_LENGTH + 2] ;
	char alert_str[200], *alert_ptr ;

	prog = -1 ;

	if( prog_array[prog_num + prog_oset] )	/* If child there already,	*/
											/* does it want deleting.	*/
	{
		rsrc_gaddr( R_STRING, PROG_DEL, &alert_ptr ) ;
		names_only( prog_array[prog_num + prog_oset] , names, 30, FALSE ) ;
		sprintf( alert_str, alert_ptr, names  ) ;
		if( form_alert( 1, alert_str ) == 2 )  prog = 0 ;
	}
	else  prog = get_person_reference( people[male].family_name, FALSE ) ;

	if( prog != -1 )
	{
		prog_array[prog_num + prog_oset] = prog ;
		names_date( prog, names, 40, FALSE ) ;
		strcpy( c_form_addrs.child[prog_num], names ) ;
		objc_draw( coup_form.fm_ptr, PROGENY, MAX_DEPTH,
										(int) box.g_x,(int) box.g_y,
										(int) box.g_w, (int) box.g_h ) ;
	}
}
コード例 #4
0
ファイル: TRANSFER.C プロジェクト: daemqn/Atari_ST_Sources
open_dial(int flag)
{
static int x,y,w,h;

    if ((!_AccFlag) || (para.multi==MULTINE)){
        if(flag) {
	        strcpy((char *)transfer[BLOCKNUM].ob_spec,"0001");
    	    strcpy((char *)transfer[STATUS].ob_spec,"---");
        	strcpy((char *)transfer[RETRIES].ob_spec,"0001");
            form_center(transfer,&x,&y,&w,&h);
            form_dial(0,0,0,0,0,x,y,w,h);
            objc_draw(transfer,0,8,x,y,w,h);
        }
        else form_dial(3,0,0,0,0,x,y,w,h);
    }
    else {
        if (flag) {
            wind_up(0);
            strcpy(msg,"0001 01 ---");
            v_gtext(handle,640-12*8,13,msg);
        }
        else wind_up(1);
        was_full=0;Bconout(2,7);
    }
}
コード例 #5
0
ファイル: TRANSFER.C プロジェクト: daemqn/Atari_ST_Sources
draw_dial(int bnr, int ret, int st)
{
char bbb[5];

    switch(st) {
    case ACK:
        strcpy((char *)transfer[STATUS].ob_spec,"ACK");
        break;
    case NAK:
        strcpy((char *)transfer[STATUS].ob_spec,"NAK");
        break;
    case CHK:
        strcpy((char *)transfer[STATUS].ob_spec,"CHK");
        break;
    case -1:
        strcpy((char *)transfer[STATUS].ob_spec,"TIMOUT");
        break;
    default:
        strcpy((char *)transfer[STATUS].ob_spec,"???");
    }
    if ((!_AccFlag) || (para.multi==MULTINE)) {
        strcpy((char *)transfer[BLOCKNUM].ob_spec,itoas(bnr,4,bbb,0));
        strcpy((char *)transfer[RETRIES].ob_spec,itoas(ret,4,bbb,0));
        objc_draw(transfer,REDRAWTF,2,x,y,w,h);
    }
    else {
        itoas(bnr,4,msg,1);
        itoas(ret,2,&msg[5],1);
        strcpy(&msg[8],(char *)transfer[STATUS].ob_spec);
        msg[12]=0;
        v_gtext(handle,640-12*8,13,msg);
    }
}
コード例 #6
0
ファイル: launcher.c プロジェクト: e8johan/oaesis
/*
** Description
** Show information about oAESis
**
** 1999-01-10 CG
** 1999-01-11 CG
*/
static
void
show_information (void) {
  OBJECT * information;
  int      x;
  int      y;
  int      w;
  int      h;

  /* Get address if information resource */
  rsrc_gaddr (R_TREE, INFORM, &information);

  /* Fix version number :-) */
  sprintf(information[INFOVERSION].ob_spec.tedinfo->te_ptext,
          OAESIS_VERSION);

  /* Calculate area of resource */
  form_center (information, &x, &y, &w, &h);

  /* Reserve area for dialog */
  form_dial (FMD_START, x, y, w, h, x, y, w, h);

  /* Draw dialog */
  objc_draw (information, 0, 9, x, y, w, h);

  /* Let the user handle the dialog */
  form_do (information, 0);

  /* Free area used by dialog */
  form_dial (FMD_FINISH, x, y, w, h, x, y, w, h);

  /* Restore ok button */
  information[INFOOK].ob_state &= ~SELECTED;
}
コード例 #7
0
ファイル: fix-fwid.c プロジェクト: daemqn/Atari_ST_Sources
/***************************
* restore ttf-gdos to its previous config
*/
static void tidy_up( void )
{
register uint16 n = pInfo->nr_wkstns;
register WORKSTN_RECORD *pw = pInfo->workstn_table;
char *const gempath = ((void**)pInfo)[-1];
register int i = gem_font_count;
int xdial,ydial,wdial,hdial;         /* co-ords for dialog box */
int  x,y,w,h;

   form_center (&rs_object,&xdial,&ydial,&wdial,&hdial);
   x=y=w=h=0;
   form_dial (FMD_START,x,y,w,h,xdial,ydial,wdial,hdial);      /* reserve room */
   sprintf( usr_msg, "please wait ..." );
   objc_draw( &rs_object, 0, 2, xdial, ydial, wdial, hdial ); /* draw the dialog box */

   for( ; n>0; n--, pw++ ) {
      /* printf( "wkstn %d, %s, 1st font is %d, nr is %d\n", pw->id, &pw->driver_name, pw->nr_gemfonts, pw->first_font ); */
      pw->nr_gemfonts = save[pw->id].nr_gemfonts;
      pw->first_font = save[pw->id].first_font;
   } /* for */

   for( ; i>=0; i-- ) {
      FONT_FILE_NAME( gempath+pInfo->len_gem_path, i );
      remove( gempath );
   } /* for */

   form_dial( FMD_FINISH, x, y, w, h, xdial, ydial, wdial, hdial );  /* release its room */

} /* tidy_up() */
コード例 #8
0
ファイル: RSC_BIS.C プロジェクト: daemqn/Atari_ST_Sources
static void autre_type_affiche(C_OBJ **liste,int n,int n_case,int pos, int x,int y,int w,int h,int select)
{
int a;

	adr_autre_type[AUT_SLID].ob_y=pos*(adr_autre_type[AUT_LIFT].ob_height-adr_autre_type[AUT_SLID].ob_height)/(n-n_case);
	objc_draw (adr_autre_type, AUT_LIFT, 2, x, y, w, h);
	for(a=n_case;	a>=0;	a--)
	{
		if(select==pos+a)		/*	si l'object selectionne	*/
			adr_autre_type[AUT_START+a].ob_state |=SELECTED;	/*	d‚place	le l'item SELECTED	*/
		else
			adr_autre_type[AUT_START+a].ob_state &=~SELECTED;

		strcpy(((TEDINFO *)((adr_autre_type[AUT_START+a]).ob_spec))->te_ptext,(*(liste+a+pos))->spec.type.tt_nom);
		objc_draw (adr_autre_type, AUT_START+a, 1, x, y, w, h);
	}
}
コード例 #9
0
ファイル: MT_MAIN.C プロジェクト: daemqn/Atari_ST_Sources
/* --------------------------- */
void redraw_w0(int ind)
{
int w0x, w0y, w0w, w0h;

wind_get(0, WF_FIRSTXYWH, &w0x, &w0y, &w0w, &w0h);
while (w0w > 0 && w0h > 0)
	{
	objc_draw(back, ind, 1, w0x, w0y, w0w, w0h);
	wind_get(0, WF_NEXTXYWH, &w0x, &w0y, &w0w, &w0h);
	}
}
コード例 #10
0
ファイル: DOG.C プロジェクト: daemqn/Atari_ST_Sources
void redraw( GRECT *clip, WORD obj, WORD depth )
{
	GRECT *win;
	
	wind_update(BEG_UPDATE);
	win = cpxGetFirstRect(xcpb,clip);
	while (win)
	{	objc_draw(dog,obj,depth,win->g_x,win->g_y,win->g_w,win->g_h);
		win = cpxGetNextRect(xcpb);
	}
	wind_update(END_UPDATE);
}
コード例 #11
0
ファイル: ttf-dump.c プロジェクト: daemqn/Atari_ST_Sources
/* Display the font names in the dialog box */
static void show_names( int top )
{
int i, j;
   graf_mouse(M_OFF, 0);
   for(i=NAME1, j=top; i<=NAME8; i++, j++ ) {
      ((TEDINFO *)chooser[i].ob_spec)->te_ptext = name_table[j].name;
      ((TEDINFO *)chooser[i].ob_spec)->te_txtlen = strlen( name_table[j].name );
      if( j == iSelected ) chooser[i].ob_state |= SELECTED;  /* highlight if selected */
      else chooser[i].ob_state &= ~SELECTED;
   }
   objc_draw(chooser, NAMEBOX, MAX_DEPTH, chooser[ROOT].ob_x, chooser[ROOT].ob_y, chooser[ROOT].ob_width, chooser[ROOT].ob_height );
   graf_mouse(M_ON, 0);
} /* show_names() */
コード例 #12
0
ファイル: genfoot.c プロジェクト: daemqn/Atari_ST_Sources
void  set_footers( void )
{
	BOOLEAN done = FALSE ;
	short button ;
	short old_footer_lines = footer_lines() ;
	
	copy_footers_to_form() ;
	app_modal_init( footers_ptr, footer_help, TITLED ) ;

	while( !done )
	{
		button = app_modal_do() ;
		button &= ~DOUBLE_CLICK ;

		if( button && button != APP_MODAL_TERM )
		{
			footers_ptr[button].ob_state &= ~SELECTED ;
			objc_draw( footers_ptr, button, 0, PTRS( app_modal_box() ) ) ;
		}

		switch( button )
		{
			case FOOTER_OK :
				copy_form_to_footers() ;
				done = TRUE ;
				break ;
			case FOOTER_CANCEL :
			case APP_MODAL_TERM :
				done = TRUE ;
				break ;
			case FOOTER_SAVE :
				copy_form_to_footers() ;
				saved_footers = footers ;
				save_defaults() ;
				done = TRUE ;
				break ;
			case FOOTER_HELP :
				help( footer_help ) ;
				break ;
			default :
				break ; 
		}
	}

	if( footer_lines() != old_footer_lines )  gdos_params_valid = FALSE ;
							/* This will force draw_custom_pages	*/
							/* to get a correct value				*/

	app_modal_end() ;
}
コード例 #13
0
ファイル: XWINDOW.C プロジェクト: daemqn/Atari_ST_Sources
static void xw_redraw_menu(WINDOW *w, int object, RECT *r)
{
	RECT r1, r2, in;
	OBJECT *menu = w->xw_menu;
	int pxy[4];

	if (menu != NULL)
	{
/*		xw_bar_rect(w,&r1);*/

		xd_objrect(w->xw_menu, object, &r1);
		if (object == w->xw_bar)
			r1.h += 1;

		/* Begin en eind coordinaten van lijn onder de menubalk. */

		pxy[0] = w->xw_work.x;
		pxy[1] = pxy[3] = w->xw_work.y + r1.h - 1;
		pxy[2] = w->xw_work.x + w->xw_work.w - 1;

		if (xd_rcintersect(r, &r1, &r1) == TRUE)
		{
			xd_wdupdate(BEG_UPDATE);
			xd_mouse_off();

			vswr_mode(xd_vhandle, MD_REPLACE);

			vsl_color(xd_vhandle, 1);
			vsl_ends(xd_vhandle, 0, 0);
			vsl_type(xd_vhandle, 1);
			vsl_width(xd_vhandle, 1);

			xw_get(w, WF_FIRSTXYWH, &r2);

			while ((r2.w != 0) && (r2.h != 0))
			{
				if (xd_rcintersect(&r1, &r2, &in) == TRUE)
				{
					objc_draw(menu, w->xw_bar, MAX_DEPTH, in.x, in.y, in.w, in.h);
					xd_clip_on(&in);
					v_pline(xd_vhandle, 2, pxy);
					xd_clip_off();
				}
				xw_get(w, WF_NEXTXYWH, &r2);
			}
			xd_mouse_on();
			xd_wdupdate(END_UPDATE);
		}
	}
}
コード例 #14
0
ファイル: ttf-dump.c プロジェクト: daemqn/Atari_ST_Sources
/* ------------------------------------------------------------------ */
static void choose_font(void)
{
OBJECT *loading;
int cx, cy, cw, ch;
bool is_prn;

   is_prn = (form_alert( 1, "[0][select device][screen|printer]" )==2);
   dprintf(( "\033Hselected %s workstation\n", is_prn? "printer": "screen" ));

   if( init_wkstn( is_prn ) ) {

      graf_mouse(BUSY_BEE, 0);
      dprintf(( "ready to load fonts ... " )); dgetchar();
      rsrc_gaddr( R_TREE, LDGFONTS, &loading );
      form_center( loading, &cx, &cy, &cw, &ch);
      form_dial(FMD_START, 0, 0, 0, 0, cx, cy, cw, ch);
      objc_draw( loading, ROOT, MAX_DEPTH, cx, cy, cw, ch);
      (void)vst_load_fonts(handle, 0);
      form_dial( FMD_FINISH, 0, 0, 0, 0, cx, cy, cw, ch );
      dprintf(( "\033Hdone\nnow getting font names ..." )); dgetchar();
      if( get_fontnames( *(tGemFont **)(&_contrl[10]) ) ) {
	 dprintf(( "done\n" )); dgetchar();
	 graf_mouse(ARROW, 0);
	 while( select_font( is_prn ) ) {
	    if( iSelected == NO_INDEX ) {
	       form_alert( 1, "[1][You must choose|a font to dump][Try Again]" );
	    }
	    else if( gem_file_name[0] == '\0' ) {
	       form_alert( 1, "[1][You must choose a|"
			 "gem font file name][Try Again]" );
	    }
	    else {
	       dump_font();
	       gem_file_name[0] = '\0'; /* reset entries for next round */
	       iSelected = NO_INDEX;
	    } /* if */
	 } /* while */
      } /* if */

      vst_unload_fonts(handle, 0);

      free(name_table);

      dprintf(( "\033Hclosing %s workstation ...", is_prn? "printer": "screen" ));
      if( is_prn ) v_clswk(handle);
      else v_clsvwk(handle);
   }
   else form_alert(1, "[3][Can't open workstation][OK]");

} /* choose_font() */
コード例 #15
0
ファイル: WINDIAL.C プロジェクト: daemqn/Atari_ST_Sources
/* ***Fenster anmelden + Dialog zeichnen*** */
int wdial_init(OBJECT *tree, char *title)
{
 short wx, wy, ww, wh;
 int dwhndl;

 form_center(tree, &wx, &wy, &ww, &wh);           /* Gr��e holen */
 wind_calc(WC_BORDER, NAME|MOVER, wx, wy, ww, wh, &wx, &wy, &ww, &wh);
 dwhndl=wind_create(NAME|MOVER, wx, wy, ww, wh);  /* Fenster anmelden */
 if(dwhndl<0)  return(NULL);
 wind_set(dwhndl, WF_NAME, title);                /* Name setzen */
 wind_open(dwhndl, wx, wy, ww, wh);               /* Fenster �ffnen */
 objc_draw(tree, ROOT, MAX_DEPTH, wx, wy, ww, wh);  /* Dialog zeichnen */

 return(dwhndl);
}
コード例 #16
0
ファイル: gem_misc.c プロジェクト: daemqn/Atari_ST_Sources
void progress_display_object( int obj )
{
  int x, y;
  objc_offset( progress_tree, obj, &x, &y );
  if( preferences.pref_flags.multitask )
  {
    ApplWrite( app.id, WM_REDRAW, progress_win->handle, x, y,
               progress_tree[obj].ob_width,
               progress_tree[obj].ob_height );
    /* yield(); */
  }
  else
    objc_draw( progress_tree, 0, MAX_DEPTH, x, y,
             progress_tree[obj].ob_width,
             progress_tree[obj].ob_height );
}
コード例 #17
0
ファイル: WINDIAL.C プロジェクト: daemqn/Atari_ST_Sources
/* ***Dialog neu zeichnen, Rechteckliste beachten*** */
void wdial_redraw(int dwhndl, OBJECT *tree, GRECT *redrwrect)
{
 GRECT clip;               /* F�r Rechtecksliste */

 wind_update(BEG_UPDATE); graf_mouse(M_OFF, 0L);

 wind_get(dwhndl, WF_FIRSTXYWH, &clip.g_x, &clip.g_y, &clip.g_w, &clip.g_h);
 while(clip.g_w!=0 && clip.g_h!=0)
  {
   if( rc_intersect(redrwrect, &clip) )
     objc_draw(tree, ROOT, MAX_DEPTH, clip.g_x, clip.g_y, clip.g_w, clip.g_h);
   wind_get(dwhndl, WF_NEXTXYWH, &clip.g_x, &clip.g_y, &clip.g_w, &clip.g_h);
  }

 graf_mouse(M_ON, 0L); wind_update(END_UPDATE);
}
コード例 #18
0
ファイル: aktion.c プロジェクト: daemqn/Atari_ST_Sources
static void redraw(int start, int depth, int x, int y, int w, int h)
{
	GRECT		r, r1;
	
	r.g_x = x; r.g_y = y; r.g_w = w; r.g_h = h;
	wind_update(BEG_UPDATE);
	hide_mouse_if_needed(&r);
	wind_get_grect(akt_handle, WF_FIRSTXYWH, &r1);
	while (r1.g_w != 0 && r1.g_h != 0)
	{
		if (rc_intersect(&r, &r1))
			objc_draw(aktion, start, depth, r1.g_x, r1.g_y, r1.g_w, r1.g_h);
		wind_get_grect(akt_handle, WF_NEXTXYWH, &r1);
	}
	show_mouse();
	wind_update(END_UPDATE);
}
コード例 #19
0
ファイル: formtest.c プロジェクト: e8johan/oaesis
int
main(void)
{
  int      x,y,w,h;
	
  int      vid;

  int      work_in[] = {1,7,1,1,1,1,1,1,1,1,2};
  int      work_out[57];
  OBJECT * dial;
	
  appl_init();

  vid = graf_handle(&vid,&vid,&vid,&vid);

  v_opnvwk(work_in,&vid,work_out);
	
  if(rsrc_load("test2rsc.rsc"))
  {
    rsrc_gaddr(R_TREE,TESTDIAL,&dial);
    
    form_center(dial,&x,&y,&w,&h);
    form_dial(FMD_START,0,0,0,0,x,y,w,h);
    
    objc_draw(dial,0,9,x,y,w,h);
    
    own_form_do(dial,0);
    
    form_dial(FMD_FINISH,0,0,0,0,x,y,w,h);
    
    rsrc_free();
  }
  else
  {
    form_alert(1,"[1][Couldn't load resource file!][Bummer!]");
  }
	
  v_clsvwk(vid);
	
  appl_exit();

  return 0;
}
コード例 #20
0
ファイル: STDINPUT.C プロジェクト: daemqn/Atari_ST_Sources
void std_input(char *title, char *text, char *txt_cancel)
{
  int x, y, w, h ;
  int button ;

  if ( stdinput == NULL ) stdinput_fix() ;

  if ( txt_cancel != NULL ) strcpy( stdinput[INPUT_CANCEL].ob_spec.free_string, txt_cancel ) ;
  write_text(stdinput, INPUT_TEXT, "") ;
  write_text(stdinput, INPUT_TITLE, title) ;
  form_center(stdinput, &x, &y, &w, &h) ;
  form_dial(0, x, y, w, h, x, y, w, h) ;
  objc_draw(stdinput, 0, 200, x, y, w, h) ;
  button = form_do(stdinput, INPUT_TEXT) ;
  deselect(stdinput, button) ;
  form_dial(3, x, y, w, h, x, y, w, h) ;
  if (button == INPUT_OK) read_text(stdinput, INPUT_TEXT, text) ;
  else                    text[0] = 0 ;
}
コード例 #21
0
ファイル: gem_misc.c プロジェクト: daemqn/Atari_ST_Sources
void progress_display( void )
{
  int x, y, w;
  int anc_width;
  if( progress_info )
  {
    progress_prct = progress_calc_prct();
    anc_width = progress_tree[PB_PROGBAR].ob_width;
    w = (int)((long)progress_tree[PB_PROGBACK].ob_width * progress_prct / 100);
    progress_tree[PB_PROGBAR].ob_width = w;
    objc_offset( progress_tree, PB_PROGBACK, &x, &y );
    x += anc_width;
    w -= anc_width;
    if( preferences.pref_flags.multitask )
      ObjcWindDraw( progress_win, progress_tree, PB_PROGBACK, MAX_DEPTH,
                    x, y-3, w+3, progress_tree[PB_PROGBACK].ob_height+6 );
    else
      objc_draw( progress_tree, PB_PROGBACK, MAX_DEPTH,
                 x, y-3, w+3, progress_tree[PB_PROGBACK].ob_height+6 );
  }
}
コード例 #22
0
ファイル: MP2EVENT.C プロジェクト: ysei/Atari_ST_Sources
void update_objects(WINDFORM *wind,int obj_id,int depth, int pipe[8])
{
	CORDS2 r,u,o;
	CORDS t;

	if(pipe)
	{
		o.x1=pipe[4];
		o.y1=pipe[5];
		o.x2=pipe[4]+pipe[6]-1;
		o.y2=pipe[5]+pipe[7]-1;
	}

	graf_mouse(M_OFF,0);
	wind_update(BEG_UPDATE);
	wind_get(wind->whandle,WF_FIRSTXYWH,&t.x,&t.y,&t.w,&t.h);
	while(t.w || t.h)
	{
		if(pipe)
		{
			r.x1=t.x;				r.y1=t.y;
			r.x2=t.x+t.w-1;		r.y2=t.y+t.h-1;
			u.x1=max(r.x1,o.x1);	u.y1=max(r.y1,o.y1);
			u.x2=min(r.x2,o.x2);	u.y2=min(r.y2,o.y2);
		}
		else
		{
			u.x1=t.x;				u.y1=t.y;
			u.x2=t.x+t.w-1;		u.y2=t.y+t.h-1;
		}
		
		if((u.x2>=u.x1) && (u.y2>=u.y1)) 
			objc_draw(wind->formtree,obj_id,depth,
				u.x1, u.y1, u.x2-u.x1+1, u.y2-u.y1+1);
		wind_get(wind->whandle,WF_NEXTXYWH,&t.x,&t.y,&t.w,&t.h);
	}
	wind_update(END_UPDATE);
	graf_mouse(M_ON,0);
}
コード例 #23
0
ファイル: EZPSF.C プロジェクト: daemqn/Atari_ST_Sources
int *ezpstart()
{
   register int   i, *adr;
   int   *save_globl();

   setup_page();
   setup_strings();
   liney = (SYSDOM*)scrsave;
   staffy = (int*)&liney[MAXLIN];
   measnum = &staffy[MAXSYS];
   systems = (SYSDOM*)&measnum[MAXSYS];
   brackets = (LBRACK*)&systems[MAXSYS];
   braces = (LBRACE*)&brackets[MAXCON];
   for (i = 0; i < MAXCON; i++) {
      braces[i].top = 0;
      braces[i].psym = (PSYM*)0L;
      braces[i].size = 0;
      brackets[i].top = 0;
      brackets[i].size = 0;
   }
   abortp = voff = FALSE;
   init_symb_structs();
   adr = (int*)&braces[MAXCON];
   s_image = (short*)save_globl( adr );
   calc_bufsize();
   graf_mouse( ARROW );
   wind_get( DESKTOP, WF_WORKXYWH, &desk.g_x, &desk.g_y, &desk.g_w,
         &desk.g_h );
   prinaddr->ob_x = (desk.g_x + desk.g_w - prinaddr->ob_width) >> 1;
   prinaddr->ob_y = (desk.g_y + desk.g_h - prinaddr->ob_height) >> 1;
   ((TEDINFO*)(prinaddr[PRNTYPE].ob_spec))->te_ptext = prname;
   objc_draw( prinaddr, ROOT, MAX_DEPTH, prinaddr->ob_x - 3,
         prinaddr->ob_y - 3, prinaddr->ob_width + 6, prinaddr->ob_height + 6 );
   objc_offset( prinaddr, ABORT, &abort.g_x, &abort.g_y );
   abort.g_w = prinaddr[ABORT].ob_width;
   abort.g_h = prinaddr[ABORT].ob_height;
   set_interrupt();
   return adr;
}
コード例 #24
0
ファイル: WINDIAL.C プロジェクト: daemqn/Atari_ST_Sources
/* ***PopUp-Knopf behandeln*** */
int wdial_popupbutn(OBJECT *buttree, int butnr, OBJECT *ptree, int *pitem)
{
 int oldchoice=*pitem;
 int butnx, butny;
 int mpopret;

 objc_offset(buttree, butnr, &butnx, &butny);

 mpopret=wdial_popup(ptree, pitem, butnx, butny, NULL, 0, NULL);

 if(mpopret)
  {
   ptree[oldchoice].ob_state=NORMAL;
   ptree[*pitem].ob_state=CHECKED;
   strcpy(buttree[butnr].ob_spec.tedinfo->te_ptext,
      ptree[*pitem].ob_spec.free_string+2);
  }

 buttree[butnr].ob_state&=~SELECTED;
 objc_draw(buttree, butnr, 1, butnx-2, butny-2, buttree[butnr].ob_width+4, buttree[butnr].ob_height+4);

 return(mpopret);
}
コード例 #25
0
ファイル: FORMDO.C プロジェクト: daemqn/Atari_ST_Sources
/* -------------------------
	 | Dialog window handler |
	 ------------------------- */
int dialog_window(int wind_id, OBJECT *dialog, int action, int ext)
{
    int x, y, w, h, s;
    int w_x, w_y, w_w, w_h;
    int hndl, sel;

    switch(action)
    {
    case CLS_DIA:
        wind_close(wind_id);
        wind_delete(wind_id);
        break;

    case OPN_DIA:
        form_center(dialog, &x, &y, &w, &h);
        wind_calc(WC_BORDER, MOVER|NAME, x, y, w, h, &w_x, &w_y, &w_w, &w_h);
        hndl = open_window(MOVER|NAME, w_x, w_y, w_w, w_h, "");
        return hndl;

    case RDW_DIA:
        s = first_rect(wind_id, 0);
        while(s)
        {
            objc_draw(dialog, ext, MAX_DEPTH, r_xy[0], r_xy[1], r_xy[2], r_xy[3]);
            s = next_rect(wind_id, 0);
        }
        break;

    case ACT_DIA:
        sel = win_formdo(dialog, ext, wind_id);
        if (dialog[sel].ob_flags & EXIT)
            dialog[sel].ob_state &= ~SELECTED;

        return sel;
    }
    return 0;
}
コード例 #26
0
ファイル: blowaccc.c プロジェクト: daemqn/Atari_ST_Sources
/*---------------------------------------------------*/
void redraw(int obn)
{
	int x[4],xs[4], /* xw[4], xy[4],*/ xc[4];

	(void)wind_get(wid,WF_WORKXYWH,&xs[0],&xs[1],&xs[2],&xs[3]);
	(void)wind_get(wid,WF_FIRSTXYWH,&x[0],&x[1],&x[2],&x[3]);
	(void)wind_get(wid,WF_CURRXYWH,&xc[0],&xc[1],&xc[2],&xc[3]);
	rs_object[TREE1].ob_x=xs[0];
	rs_object[TREE1].ob_y=xs[1];

/*	objc_offset(rs_object,obn,&xw[0],&xw[1]);
	xw[2]=rs_object[obn].ob_width;
	xw[3]=rs_object[obn].ob_height; */
	/* Warum???????????? Funktioniert nicht mit 3D-Objs (da
		wird zu wenig neu gezeichnet, weil die Objekte gr”žer sind,
		als ob_width und ob_height angeben...!
		
		In Wirklichkeit muž man mit dem Redraw-Rechteck clippen,
		welches man mit der Redraw-Message bekommt!
		
		Bei der komischen (aber effizienten!) Methode, die Du
		verwendest (nicht Koordinaten, sonder Objekte werden
		neu gezeichnet, sehr interessant!) lass ich am besten das
		intersect-ionieren weg. objc_draw selber weiž schliesslich
		am besten, wie grož seine Objekte sind, oder?!?
	*/
	
	wind_update(BEG_UPDATE);
	while((x[2]!=0)||(x[3]!=0))
	{
/*		if ((intersect(xw,x,xs))) */
		objc_draw(rs_object,obn,42,x[0],x[1],x[2],x[3]);
		(void)wind_get(wid,WF_NEXTXYWH,&x[0],&x[1],&x[2],&x[3]);
	}
	wind_update(END_UPDATE);
}
コード例 #27
0
ファイル: blowconx.c プロジェクト: daemqn/Atari_ST_Sources
void update(int how) 
{
calc_paras(ww,hh,xres,yres);
		change_rsc();
		set_vcdata(pl_idx,1);
if (how) 	{
		schreib_regs(vcreg,ccreg,xcreg,mcreg);
#if VERSION==PLL_VERSION
		if (tree1[MONM2].ob_state&SELECTED)
			{old_ww=ww;old_hh=hh;
			c_frequ=pll_calc(clock_Mhz,old_ww,old_hh);
			}
#endif
		}
if (how<2){		
/*R		objc_draw(tree1,ROOTSCR,10,cx,cy,cw,ch);*/
		objc_draw(tree1,HFREQU,10,cx,cy,cw,ch);
		objc_draw(tree1,VFREQU,10,cx,cy,cw,ch);
		objc_draw(tree1,FESLIDER,10,cx,cy,cw,ch);
		objc_draw(tree1,LESLIDER,10,cx,cy,cw,ch);
		objc_draw(tree1,WIDTH,10,cx,cy,cw,ch);
		objc_draw(tree1,HEIGHT,10,cx,cy,cw,ch);
		}
}
コード例 #28
0
ファイル: fix-fwid.c プロジェクト: daemqn/Atari_ST_Sources
/*******************************************************
* load fonts for device
* get font chain and dump fonts (width table only) in current directory
*/
static void dump_gem_fonts( int16 dev_nr )
{
const tGemFont *pgf;	/* pointer to the font chain */
int16 handle;
char *err_msg;
register tGemFont *phdr;	/* pointer to font we are making */
char *const gempath = ((void**)pInfo)[-1];
FILE *fp;
int xdial,ydial,wdial,hdial;         /* co-ords for dialog box */
int  x,y,w,h;

   handle = init_wkstn( dev_nr );	/* open the workstation */
   if( handle == 0 ) {
      sprintf( err_string, "[3][can't connect to %s][skip]", dev_nr>10? "printer": "screen" );
      form_alert(1, err_string );
      return;
   } /* if */
   if( vst_load_fonts( handle, 0 ) == 0 ) {
      sprintf( err_string, "[3][can't find fonts for %s][skip]", dev_nr>10? "printer": "screen" );
      goto error0;
   } /* if */
   pgf = *(tGemFont **)(&_contrl[10]);	/* get pointer to font chain */
   save[dev_nr].pw->first_font = gem_font_count;

   /******************
   * loop thru font chain, 
   * writing a new font file for each font found in the chain
   * count the fonts so we can assign them to the workstations
   * this can take quite a while, so report progress as we go
   */

   form_center (&rs_object,&xdial,&ydial,&wdial,&hdial);
   x=y=w=h=0;
   form_dial (FMD_START,x,y,w,h,xdial,ydial,wdial,hdial);      /* reserve room */

   for( ; pgf!=NULL; pgf=pgf->next_font ) {
   const uint16 nr_entries = pgf->last_ade - pgf->first_ade + 1;
   const uint32 size_wid = (nr_entries+1) * sizeof(int16);	/* sizeof(*(tGemFont*)->off_table) */
   register int16 *char_tbl;
   register uint16 i;
      
      /* printf( "line %d, %.32s, %d points\n", (int)__LINE__, pgf->name, pgf->size ); */
      sprintf( usr_msg, "storing gem fonts: %d", gem_font_count );
      objc_draw( &rs_object, 0, 2, xdial, ydial, wdial, hdial ); /* draw the dialog box */
      phdr = (tGemFont*)malloc( sizeof(tGemFont) + size_wid );
      if( phdr == NULL ) {
	 err_msg = "[3][Not enough memory|to dump font][OK]";
	 goto error1;
      } /* if */
      
      *phdr = *pgf;	   /* copy header data */
      phdr->off_table = (int16*)sizeof(tGemFont);
      memcpy( phdr+1, pgf->off_table, size_wid );
      phdr->dat_table = 0L;
      
      /** convert font to intel format before dumping **/
      for( i = nr_entries+1, char_tbl = (int16*)(phdr+1); i > 0; i--, char_tbl++ ) {
	   Swapw(*char_tbl);
      } /* for */

      /* swap header words and longs */
      phdr->flags &= ~MOT_FLAG;
      Swapw(phdr->font_id);		Swapw(phdr->size);
      Swapw(phdr->first_ade);		Swapw(phdr->last_ade);
      Swapw(phdr->top); 		Swapw(phdr->ascent);
      Swapw(phdr->half);		Swapw(phdr->descent);
      Swapw(phdr->bottom);
      Swapw(phdr->max_char_width);	Swapw(phdr->max_cell_width);
      Swapw(phdr->left_offset); 	Swapw(phdr->right_offset);
      Swapw(phdr->thicken);		Swapw(phdr->ul_size);
      Swapw(phdr->lighten);		Swapw(phdr->skew);
      Swapw(phdr->flags);		Swapl(phdr->h_table);
      Swapl(phdr->off_table);		Swapl(phdr->dat_table); 
      Swapw(phdr->form_width);		Swapw(phdr->form_height);

      /* printf( "line %dn", (int)__LINE__); getchar(); */
      FONT_FILE_NAME( gempath+pInfo->len_gem_path, gem_font_count );
      fp = fopen( gempath, "wb" );
      if( fp == NULL ) {
	 err_msg = "[3][can't open gem font file|%s][OK]";
	 goto error2;
      } /* if */

      /** write the font header **/
      if( fwrite( phdr, sizeof( *phdr), 1, fp ) != 1 ) {
	 goto error3;
      } /* if */
      
      /** write the character offset table **/
      if( fwrite( phdr+1, size_wid, 1, fp ) != 1 ) {
	 goto error3;
      } /* if */
   
      fclose( fp );
      free( phdr );
      gem_font_count++;
   } /* for */
   save[dev_nr].pw->nr_gemfonts = gem_font_count - save[dev_nr].pw->first_font;
   (void)vst_unload_fonts( handle, 0 );
   if( dev_nr>10 ) v_clswk(handle);
   else v_clsvwk(handle);

   form_dial( FMD_FINISH, x, y, w, h, xdial, ydial, wdial, hdial );  /* release its room */
   return;

error3:
   fclose(fp);
   err_msg = "[3][can't write to gem font file|%s][OK]";
error2:
   sprintf( err_string, err_msg, strerror(errno) );
   free( phdr );
error1:
   form_dial( FMD_FINISH, x, y, w, h, xdial, ydial, wdial, hdial );  /* release its room */
error0:
   (void)vst_unload_fonts( handle, 0 );
   if( dev_nr>10 ) v_clswk(handle);
   else v_clsvwk(handle);
   form_alert(1, err_string );
} /* dump_gem_fonts() */
コード例 #29
0
ファイル: slider.c プロジェクト: daemqn/Atari_ST_Sources
/*----------------------------------------------------------------------------------------*/
int16	objc_scroll( OBJECT *tree, int16 vdihandle, int16 obj, int16 whdl, int32 yscroll, int16 xscroll, int16 ydraw )
{
	MFDB		s, d;
	GRECT		r, w, obr;
	int16		xy[8];
	int16		ca[8];
	int16		dy;
	boolean	draw;

	draw = FALSE;
	wind_get_grect( whdl, WF_FIRSTXYWH, &r );
	wind_get_grect( whdl, WF_WORKXYWH, &w );
	objc_rect( tree, obj, &obr );

	if( !rc_intersect( &obr, &r ) || !rc_intersect( &gl_desk, &r ) )
		return 0;

	if( r.g_w != obr.g_w || r.g_h != obr.g_h )
		draw = TRUE;

	if( labs(yscroll) >= (int32)obr.g_h || abs(xscroll) >= obr.g_w )
		draw = TRUE;

	if( !draw )
	{
		grect_to_array( &r, xy );						/* Quelle f�r vro_cpyfm */
		grect_to_array( &w, ca );						/* Array f�r clipping */
		xy[4] = xy[0];										/* Ziel f�r vro_cpyfm */
		xy[5] = xy[1];
		xy[6] = xy[2];
		xy[7] = xy[3];

		if( xscroll )										/* Horizontales Scrolling */
		{
			if( xscroll > 0 )								/* Links Scrolling */
			{
				xy[0] += (int16) xscroll;
				xy[6] -= (int16) xscroll;

				r.g_x += r.g_w - (int16)xscroll;		/* Rechter Bereich nicht gescrollt, */
				r.g_w  = (int16)xscroll;				/* mu� neu gezeichnet werden */
			}
			else												/* Rechts Scrolling */
			{
				xy[2] += (int16)xscroll;
				xy[4] -= (int16)xscroll;

				r.g_w = (int16)(-xscroll);				/* Linken Bereich noch neu zeichnen */
			}
		}
	
		dy = (int16)yscroll;
		dy = -dy;
	
		if( dy )												/* Vertikales Scrolling */
		{
			if( dy > 0 )									/* Aufw�rts Scrolling */
			{
				xy[1] += (int16)dy;						/* Werte f�r vro_cpyfm */
				xy[7] -= (int16)dy;

				r.g_y += r.g_h - (int16)dy - ydraw;	/* Unterer Bereich nicht gescrollt, */
				r.g_h  = (int16)dy + ydraw;			/* mu� neu gezeichnet werden */
			}
			else												/* Abw�rts Scrolling */
			{
				xy[3] += (int16)dy;						/* Werte f�r vro_cpyfm */
				xy[5] -= (int16)dy;

				r.g_h = (int)(-dy) + ydraw;			/* Oberen Bereich noch neu zeichnen */
			}
		}
		s.fd_addr = d.fd_addr = NULL;					/* Erzwinge Bildschirmadresse */
		vs_clip( vdihandle, 1, ca );
		hide_mouse();
		vro_cpyfm(vdihandle, S_ONLY, xy, &s, &d);
		show_mouse();
		objc_draw( tree, 0, MAX_DEPTH, &r );
	}

	return !draw;
}
コード例 #30
0
ファイル: DESKPREF.C プロジェクト: daemqn/Atari_ST_Sources
	WORD
col_pa_pref( )
{
	REG OBJECT	*obj;
	REG WORD	ret;
	REG WINDOW	*win;
	LONG		newwin;
	LONG		newdesk;
	LONG		*outpat;
	WORD		last,i,j;
	
	obj = get_tree( SSCREEN );

	newdesk = background[0].ob_spec;
	newwin = (UWORD)windspec;
					/* set the background pattern */
	last = ret = obj[DESKPREF].ob_state & SELECTED ? DESKPREF : WINPREF;

	for ( j = COLOR0,i = d_maxcolor; i < 16; i++ )
	  obj[j+i].ob_flags |= HIDETREE;	

	fm_draw( SSCREEN );

	goto c_1;
	
	while( TRUE )
	{
	  ret = xform_do( obj, 0 );
c_1:
	  if ( ret == SOK )
	    break;

	  if ( ret == SCANCEL )
	  {
	    do_finish( SSCREEN );
	    return;
	  }

	  if ( ret == DESKPREF )
	  {
	    outpat = &newdesk;
	    obj[DESKPREF].ob_state = SELECTED;
	    obj[WINPREF].ob_state = NORMAL;
	    goto c_2;
	  }
		    
	  if ( ret == WINPREF )
	  {
	    outpat = &newwin;
	    obj[WINPREF].ob_state = SELECTED;
	    obj[DESKPREF].ob_state = NORMAL;
c_2:
	    draw_fld( obj, DESKPREF );
	    draw_fld( obj, WINPREF );
	    obj[PATTERN].ob_spec = *outpat;
	  }

	  if ( ( ret >= PAT0 ) && ( ret <= PAT7 ) )
	  {
	    obj[PATTERN].ob_spec &= 0xFFFFFF0FL;
	    obj[PATTERN].ob_spec |= obj[ret].ob_spec & 0x000000F0L;	
	  }
	  else				/* color changed	*/
	  if ( ( ret >= COLOR0 ) && ( ret <= COLOR15 ) )
	  {
	    obj[PATTERN].ob_spec &= 0xFFFFFFF0L;
	    obj[PATTERN].ob_spec |= obj[ret].ob_spec & 0x0000000FL;
	  }

	  objc_draw( obj, OUTBOX, 2, 0, 0, full.w, full.h );
	  *outpat = obj[PATTERN].ob_spec;

	}/* while */

	do_finish( SSCREEN );

	if ( background[0].ob_spec != newdesk )
	{
	  background[0].ob_spec = newdesk;
	  do_redraw( 0, &full, 0 );
	}

	win = winhead;

	if ( windspec != (UWORD)newwin )
	{
	  windspec = (UWORD)newwin;
	  while( win )
	  {
	    if ( win->w_obj )	/* fixed 7/7/92	*/
	      win->w_obj[0].ob_spec = windspec;
	    win = win->w_next;
	  }

	  win = w_gfirst();
	  while( win )
	  {
	    do_redraw( win->w_id, &full, 0 );
	    win = w_gnext();
	  }
	}
}