Пример #1
0
void
Process_Resize( void )
{
  int flag;
  char old_width[10], old_height[10];
  static char *untitledStr = NULL;

  if ( DialogFlag == NEW ) {
    strcpy(undo_file, last_fname);
    last_fname[0] = '\0';
    SavedOnce = False;
    Backup_Icons();    /* for undo */
    flag = DO_NOT_SAVE;
    Init_Icons(icon_width, icon_height, flag);
    if (!untitledStr)
      untitledStr = GETSTR(2,20, "UNTITLED");
    strcpy(last_fname, untitledStr);
    strcat(last_fname, ".m.pm");
    last_fname[strlen(last_fname)] = '\0';
    ChangeTitle();
    Repaint_Exposed_Tablet();
    Dirty = False;
    NewFlag = TRUE;
    }
  else{
    sprintf(old_width, "%d", icon_width);
    XmTextFieldSetString(newWidthText, old_width);
    sprintf(old_height, "%d", icon_height);
    XmTextFieldSetString(newHeightText, old_height);
    XtManageChild(newIconDialog);
    XmProcessTraversal(newWidthText, XmTRAVERSE_CURRENT);
    XmTextFieldSetSelection(newWidthText, 0, 3, CurrentTime); }
}
Пример #2
0
void
Eval_NewSize(
        int width,
        int height )
{
  char old_width[10], old_height[10];
  int flag;

  if ((width < 1) || (width > xrdb.maxIconWidth) ||
      (height < 1) || (height > xrdb.maxIconHeight)) {
    sprintf(old_width, "%d", icon_width);
    XmTextFieldSetString(newWidthText, old_width);
    sprintf(old_height, "%d", icon_height);
    XmTextFieldSetString(newHeightText, old_height);
    DoErrorDialog(GETSTR(16,10,"Invalid width and/or\nheight specified"));
   }
  else {

    if (DialogFlag == NEW)
      flag = DO_NOT_SAVE;
    else
      flag = DO_SAVE;

    Backup_Icons();    /* for undo */
    Init_Icons(width, height, flag);

   }
}
Пример #3
0
void
Process_FlipH( void )
{
  if (Selected) {
    Backup_Icons();
    Mirror_Image(HORIZONTAL);
   }
  else
    DoErrorDialog( GETSTR(16,12, "No area has been selected") );
}
Пример #4
0
void
Process_Scale( void )
{
  if (Selected) {
    Backup_Icons();
    Backup_G_Op = GraphicsOp;
    GraphicsOp  = S_SCALE_1;
    FirstRigid = True;
   }
  else
    DoErrorDialog( GETSTR(16,12, "No area has been selected") );
}
Пример #5
0
void
Process_Clear( void )
{
  Backup_Icons();
  XSetForeground(dpy, scratch_gc, Transparent);
  XFillRectangle(dpy, color_icon, scratch_gc, 0, 0, icon_width, icon_height);
  XFillRectangle(dpy, mono_icon, scratch_gc, 0, 0, icon_width, icon_height);
  if (XtWindow(iconImage))
    XCopyArea(dpy, color_icon, XtWindow(iconImage), scratch_gc,
 0, 0, icon_width, icon_height, 0, 0);
  if (XtWindow(monoImage))
    XCopyArea(dpy, mono_icon, XtWindow(monoImage), scratch_gc,
 0, 0, icon_width, icon_height, 0, 0);
  Repaint_Exposed_Tablet();
  Dirty = False;
}
Пример #6
0
void
Process_Paste( void )
{
  if (CutCopy) {
    Backup_Icons();
    Backup_G_Op = GraphicsOp;
    GraphicsOp  = S_PASTE;
    FirstRigid = True;
    /* grayout unusable stuff */
    XtSetSensitive( editMenu_cut_pb, False);
    XtSetSensitive( editMenu_copy_pb, False);
    XtSetSensitive(editMenu_rotate_pb, False);
    XtSetSensitive(editMenu_flip_pb,  False);
    XtSetSensitive(editMenu_scale_pb,  False);
    XSync(dpy, 0);
   }
  else
    DoErrorDialog(GETSTR(16,14, "No area was previously\ncut or copied"));
}
Пример #7
0
void
Process_Cut( void )
{
  Process_Copy(&CutCopy, &CutCopy_mono);
  if (Selected) {
    Backup_Icons();
    XSetForeground(dpy, scratch_gc, Transparent);
    XFillRectangle(dpy, color_icon, scratch_gc, select_box.x, select_box.y,
 select_box.width, select_box.height);
    XFillRectangle(dpy, mono_icon, scratch_gc, select_box.x, select_box.y,
 select_box.width, select_box.height);
    XFillRectangle(dpy, XtWindow(iconImage), scratch_gc,
 select_box.x, select_box.y, select_box.width, select_box.height);
    XFillRectangle(dpy, XtWindow(monoImage), scratch_gc,
 select_box.x, select_box.y, select_box.width, select_box.height);
    Transfer_Back_Image(select_box.x, select_box.y,
   (select_box.x+select_box.width),
   (select_box.y+select_box.height), FILL);
 XtSetSensitive( editMenu_paste_pb, True);
   }
}
Пример #8
0
void
Process_RotateRight( void )
{
  XImage *color_img, *mono_img;

  Process_Copy(&color_img, &mono_img);
  /* Turn off Paste since no area is available to Paste */
  XtSetSensitive( editMenu_paste_pb, False);
  if (Selected) {
    Backup_Icons();
    Rotate = XGetImage(dpy, root, 0, 0, color_img->height, color_img->width,
    AllPlanes, format);
    Rotate_mono = XGetImage(dpy, root, 0, 0, mono_img->height, mono_img->width,
    AllPlanes, format);
    Block_Rotate(color_img, Rotate, ROTATE_R);
    Block_Rotate(mono_img, Rotate_mono, ROTATE_R);
    XDestroyImage(color_img);
    XDestroyImage(mono_img);
    Backup_G_Op = GraphicsOp;
    GraphicsOp  = S_ROTATE;
    FirstRigid = True;
   }
}
Пример #9
0
int
Flood_Region(
        int flood_x,
        int flood_y )
{
  XImage *ImagePix, *MonoPix;
  unsigned long new_pixel, new_mono;

#ifdef DEBUG
  int i, j;
  unsigned long old_pixel;

  if (debug)
    stat_out("Entering Flood_Region\n");
#endif

/*--- get the image from the (adjusted) box ---*/

  ImagePix = XGetImage(dpy, color_icon, 0, 0, icon_width, icon_height,
		AllPlanes, format);
  if (ImagePix == NULL)
    return (False);
  MonoPix = XGetImage(dpy, mono_icon, 0, 0, icon_width, icon_height,
		AllPlanes, format);
  if (MonoPix == NULL)
    return (False);

#ifdef DEBUG
  if (debug)
    stat_out("  - got the image\n");
#endif

  if (ColorBlock == STATIC_COLOR) {
    new_pixel = StaticPen[CurrentColor];
    new_mono  = StaticMono[CurrentColor];
   }
  else {
    new_pixel = DynamicPen[CurrentColor];
    new_mono  = DynamicMono[CurrentColor];
   }

#ifdef DEBUG
  if (debug) {
    for (i=0; i<icon_width; i++)
      for (j=0; j<icon_height; j++) {
	old_pixel = XGetPixel(ImagePix, i, j);
	if ((old_pixel < 0) || (old_pixel > 255))
	  stat_out("      BAD PIXEL VALUE (%d) AT [%d,%d]\n", old_pixel, i, j);
       }
    stat_out("  SUCCESSFULLY accessed each pixel in the image\n");
   }
#endif

  flood_min_x = icon_width;
  flood_min_y = icon_height;
  flood_max_x = 0;
  flood_max_y = 0;

  Flood_Fill(ImagePix, MonoPix, flood_x, flood_y, ImagePix->width,
	ImagePix->height, new_pixel, new_mono);
  XFlush(dpy);

  Backup_Icons();
  XPutImage(dpy, color_icon, Color_gc, ImagePix, 0, 0, 0, 0,
		icon_width, icon_height);
  XPutImage(dpy, XtWindow(iconImage), Color_gc, ImagePix,
		0, 0, 0, 0, icon_width, icon_height);
  XPutImage(dpy, mono_icon, Mono_gc, MonoPix, 0, 0, 0, 0,
		icon_width, icon_height);
  XPutImage(dpy, XtWindow(monoImage), Mono_gc, MonoPix,
		0, 0, 0, 0, icon_width, icon_height);
  Transfer_Back_Image(flood_min_x, flood_min_y,
			flood_max_x, flood_max_y, FILL);
  XDestroyImage(ImagePix);
  XDestroyImage(MonoPix);

#ifdef DEBUG
  if (debug)
    stat_out("Leaving Flood_Region\n");
#endif

  return (True);

}