Example #1
0
static void
color_pick_ok(int x, int y, unsigned char *pix, XtPointer data)
{
    struct ida_coledit *me = data;
    int max;

    if (debug)
	fprintf(stderr,"color_pick_ok: +%d+%d %d/%d/%d\n",
		x,y, pix[0],pix[1],pix[2]);

    max = 0;
    if (max < pix[0])
	max = pix[0];
    if (max < pix[1])
	max = pix[1];
    if (max < pix[2])
	max = pix[2];

    XmToggleButtonSetState(me->toggle,False,True);
    me->red.parm.right   = (int)255 * pix[0] / max;
    color_update(me,&me->red,1);
    me->green.parm.right = (int)255 * pix[1] / max;
    color_update(me,&me->green,1);
    me->blue.parm.right  = (int)255 * pix[2] / max;
    color_update(me,&me->blue,1);

    if (debug)
	fprintf(stderr,"color_pick_ok: %d/%d/%d max=%d\n",
		me->red.parm.right,
		me->green.parm.right,
		me->blue.parm.right,
		max);
}
Example #2
0
static void
color_text(Widget widget, XtPointer client_data, XtPointer calldata)
{
    struct ida_coledit *me = client_data;
    int left,right,bottom,top;
    float gamma;

    if (widget == me->l &&
	1 == sscanf(XmTextGetString(me->l),"%d",&left) &&
	left >= 0 && left <= me->cur->parm.right) {
	me->cur->parm.left = left;
    }
    if (widget == me->r &&
	1 == sscanf(XmTextGetString(me->r),"%d",&right) &&
	me->cur->parm.left <= right && right <= 255) {
	me->cur->parm.right = right;
    }
    if (widget == me->b &&
	1 == sscanf(XmTextGetString(me->b),"%d",&bottom) &&
	bottom <= me->cur->parm.top) {
	me->cur->parm.bottom = bottom;
    }
    if (widget == me->t &&
	1 == sscanf(XmTextGetString(me->t),"%d",&top) &&
	me->cur->parm.bottom <= top) {
	me->cur->parm.top = top;
    }
    if (widget == me->g &&
	1 == sscanf(XmTextGetString(me->g),"%f",&gamma)) {
	me->cur->parm.gamma = gamma;
    }
    color_update(me,me->cur,0);
}
Example #3
0
static void
color_vals(Widget widget, XtPointer client_data, XtPointer calldata)
{
    struct ida_hist *cur = client_data;
    struct ida_coledit *me = cur->up;

    me->cur = cur;
    color_update(me,cur,2);
}
Example #4
0
File: vdp.c Project: ben401/OpenEmu
void vdp_restore(uint8 *vdp_regs)
{
  int i;
  
  for (i=0;i<0x20;i++) 
  {
    reg_w(i, vdp_regs[i]);
  }

  /* reinitialize HVC tables */
  vctab = (vdp_pal) ? ((reg[1] & 8) ? vc_pal_240 : vc_pal_224) : vc_ntsc_224;
  hctab = (reg[12] & 1) ? cycle2hc40 : cycle2hc32;

  /* reinitialize overscan area */
  bitmap.viewport.x = config.overscan ? 14 : 0;
  bitmap.viewport.y = config.overscan ? (((reg[1] & 8) ? 0 : 8) + (vdp_pal ? 24 : 0)) : 0;
  bitmap.viewport.changed = 2;

  /* restore VDP timings */
  fifo_latency = (reg[12] & 1) ? 27 : 30;
  if ((code & 0x0F) == 0x01) fifo_latency = fifo_latency * 2;

  /* remake cache */
  for (i=0;i<0x800;i++) 
  {
    bg_name_list[i]=i;
    bg_name_dirty[i]=0xFF;
  }
  bg_list_index=0x800;

  /* reinitialize palette */
  color_update(0x00, *(uint16 *)&cram[border << 1]);
  for(i = 1; i < 0x40; i += 1)
  {
    color_update(i, *(uint16 *)&cram[i << 1]);
  }
}
Example #5
0
static void
color_mouse(Widget widget, XtPointer client_data,
	    XEvent *ev, Boolean *cont)
{
    struct ida_hist *me = client_data;
    int x,y;

    switch (ev->type) {
    case ButtonPress:
    case ButtonRelease:
    {
	XButtonEvent *e = (XButtonEvent*)ev;

	x = e->x;
	y = e->y;
	break;
    }
    case MotionNotify:
    {
	XMotionEvent *e = (XMotionEvent*)ev;

	x = e->x;
	y = e->y;
	break;
    default:
	return;
    }
    }
    if (x > (me->parm.right + me->parm.left)/2) {
	me->parm.right = x;
	if (me->parm.right > 255)
	    me->parm.right = 255;
	if (me->parm.right < me->parm.left)
	    me->parm.right = me->parm.left;
    } else {
	me->parm.left = x;
	if (me->parm.left < 0)
	    me->parm.left = 0;
	if (me->parm.left > me->parm.right)
	    me->parm.left = me->parm.right;
    }
    color_update(me->up,me,1);
}
Example #6
0
void
color_init(struct ida_image *img)
{
    Widget menu,push,rc;
    struct ida_coledit *me;
    Arg args[2];

    me = malloc(sizeof(*me));
    memset(me,0,sizeof(*me));
    color_calchist(img,me);

    /* dialog shell */
    me->dlg = XmCreatePromptDialog(app_shell,"color",NULL,0);
    XmdRegisterEditres(XtParent(me->dlg));
    XtUnmanageChild(XmSelectionBoxGetChild(me->dlg,XmDIALOG_SELECTION_LABEL));
    XtUnmanageChild(XmSelectionBoxGetChild(me->dlg,XmDIALOG_HELP_BUTTON));
    XtUnmanageChild(XmSelectionBoxGetChild(me->dlg,XmDIALOG_TEXT));
    me->form = XtVaCreateManagedWidget("form",xmFormWidgetClass,
				       me->dlg,NULL);
    XtAddCallback(XtParent(me->dlg),XmNdestroyCallback,color_destroy,me);
    XtAddCallback(me->dlg,XmNokCallback,color_button_cb,me);
    XtAddCallback(me->dlg,XmNcancelCallback,color_button_cb,me);

    /* histograms */
    XtVaCreateManagedWidget("hist",xmLabelWidgetClass,
			    me->form,NULL);
    color_createhist(me->form,"red",  x11_red,  &me->red);
    color_createhist(me->form,"green",x11_green,&me->green);
    color_createhist(me->form,"blue", x11_blue, &me->blue);
    me->red.up = me;
    me->green.up = me;
    me->blue.up = me;
    XtVaCreateManagedWidget("map",xmLabelWidgetClass,
			    me->form,NULL);

    /* control */
    me->toggle = XtVaCreateManagedWidget("lock",xmToggleButtonWidgetClass,
					 me->form,NULL);
    XtAddCallback(me->toggle,XmNvalueChangedCallback,color_lock,me);
    menu = XmCreatePulldownMenu(me->form,"valsM",NULL,0);
    XtSetArg(args[0],XmNsubMenuId,menu);
    me->vals = XmCreateOptionMenu(me->form,"vals",args,1);
    XtManageChild(me->vals);
    push = XtVaCreateManagedWidget("red",xmPushButtonWidgetClass,menu,NULL);
    XtAddCallback(push,XmNactivateCallback,color_vals,&me->red);
    push = XtVaCreateManagedWidget("green",xmPushButtonWidgetClass,menu,NULL);
    XtAddCallback(push,XmNactivateCallback,color_vals,&me->green);
    push = XtVaCreateManagedWidget("blue",xmPushButtonWidgetClass,menu,NULL);
    XtAddCallback(push,XmNactivateCallback,color_vals,&me->blue);

    /* in range */
    rc = XtVaCreateManagedWidget("in",xmRowColumnWidgetClass,me->form,NULL);
    XtVaCreateManagedWidget("label",xmLabelWidgetClass,rc,NULL);
    me->l = XtVaCreateManagedWidget("left",xmTextWidgetClass,rc,NULL);
    XtAddCallback(me->l,XmNvalueChangedCallback,color_text,me);
    me->r = XtVaCreateManagedWidget("right",xmTextWidgetClass,rc,NULL);
    XtAddCallback(me->r,XmNvalueChangedCallback,color_text,me);

    /* out range */
    rc = XtVaCreateManagedWidget("out",xmRowColumnWidgetClass,me->form,NULL);
    XtVaCreateManagedWidget("label",xmLabelWidgetClass,rc,NULL);
    me->b = XtVaCreateManagedWidget("bottom",xmTextWidgetClass,rc,NULL);
    XtAddCallback(me->b,XmNvalueChangedCallback,color_text,me);
    me->t = XtVaCreateManagedWidget("top",xmTextWidgetClass,rc,NULL);
    XtAddCallback(me->t,XmNvalueChangedCallback,color_text,me);

    /* gamma */
    rc = XtVaCreateManagedWidget("gamma",xmRowColumnWidgetClass,me->form,NULL);
    XtVaCreateManagedWidget("label",xmLabelWidgetClass,rc,NULL);
    me->g = XtVaCreateManagedWidget("gamma",xmTextWidgetClass,rc,NULL);
    XtAddCallback(me->g,XmNvalueChangedCallback,color_text,me);

    /* testing stuff */
    rc = XtVaCreateManagedWidget("pick",xmRowColumnWidgetClass,me->form,NULL);
    push = XtVaCreateManagedWidget("white",xmPushButtonWidgetClass,rc,NULL);
    XtAddCallback(push,XmNactivateCallback,color_pick,me);
    
    XtManageChild(me->dlg);

    me->cur = &me->red;
    color_update(me,me->cur,2);
    XmToggleButtonSetState(me->toggle,True,True);
}
Example #7
0
bool color_field(bool update=true)
{
if(update || color_middle==-1){color_update();}
if(color_now==2){return true;}else{return false;}
}
Example #8
0
bool color_backround(bool update=true)
{
if(update || color_middle==-1){color_update();}
if(color_now==0){return true;}else{return false;}
}