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); } }
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); } }
void Process_FlipH( void ) { if (Selected) { Backup_Icons(); Mirror_Image(HORIZONTAL); } else DoErrorDialog( GETSTR(16,12, "No area has been selected") ); }
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") ); }
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; }
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")); }
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); } }
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; } }
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); }