Beispiel #1
0
VOID AROSCycle__GM_RENDER(Class *cl, Object *o, struct gpRender *msg)
{
    struct CycleData *data = INST_DATA(cl, o);

    /* Full redraw: clear and draw border */
    DrawImageState(msg->gpr_RPort,IM(EG(o)->GadgetRender),
                   EG(o)->LeftEdge, EG(o)->TopEdge,
                   EG(o)->Flags&GFLG_SELECTED?IDS_SELECTED:IDS_NORMAL,
                   msg->gpr_GInfo->gi_DrInfo);

    if (data->font)
    	SetFont(msg->gpr_RPort, data->font);
    else
	SetFont(msg->gpr_RPort, msg->gpr_GInfo->gi_DrInfo->dri_Font);

    if (data->labels)
        renderlabel(EG(o), data->labels[data->active],
                    msg->gpr_RPort, msg->gpr_GInfo);
		    
    /* Draw disabled pattern */
    if (G(o)->Flags & GFLG_DISABLED)
        drawdisabledpattern(msg->gpr_RPort,
                            msg->gpr_GInfo->gi_DrInfo->dri_Pens[SHADOWPEN],
                            G(o)->LeftEdge, G(o)->TopEdge,
                            G(o)->Width, G(o)->Height);

}
Beispiel #2
0
STATIC VOID drawimage(Class *cl, struct Gadget *gad, struct RastPort *rp,
                      BOOL checked, BOOL disabled)
{
    struct CheckBoxData *data;
    struct Image     	*img;
    ULONG   	     	state = IDS_NORMAL;

    data = INST_DATA(cl, (Object *)gad);
    
    if (checked)
    {
        if (gad->SelectRender)
        {
            img = gad->SelectRender;
            state = IDS_NORMAL;
        }
	else
        {
            img = gad->GadgetRender;
            state = IDS_SELECTED;
        }
    }
    else
    {
        img = gad->GadgetRender;
        state = IDS_NORMAL;
    }

    if (disabled)
    {
        if ((gad->Flags & GFLG_IMAGEDISABLE) && (state == IDS_NORMAL))
	{
            state = IDS_DISABLED;
	}
        else if (gad->Flags & GFLG_IMAGEDISABLE)
	{
            state = IDS_SELECTEDDISABLED;
	}
    }

    DrawImageState(rp, img, gad->LeftEdge, gad->TopEdge, state, data->dri);

    /* Draw disabled pattern, if not supported by imageclass. */
    if ((disabled) && !(gad->Flags & GFLG_IMAGEDISABLE))
    {
	DoDisabledPattern(rp,
			  gad->LeftEdge,
			  gad->TopEdge,
			  gad->LeftEdge + gad->Width - 1,
			  gad->TopEdge + gad->Height - 1,
			  data->dri->dri_Pens[SHADOWPEN],
			  GadToolsBase);
    }
    
}
Beispiel #3
0
IPTR GTSlider__GM_RENDER(Class *cl, struct Gadget *g, struct gpRender *msg)
{
    struct SliderData 	*data = INST_DATA(cl, g);
    IPTR 		retval;
    
    if (msg->gpr_Redraw == GREDRAW_REDRAW)
    {
	DrawImageState(msg->gpr_RPort,
		(struct Image *)data->frame,
		g->LeftEdge - BORDERPROPSPACINGX,
		g->TopEdge  - BORDERPROPSPACINGY,
		IDS_NORMAL,
		msg->gpr_GInfo->gi_DrInfo);
   
    }
    
    retval = DoSuperMethodA(cl, (Object *)g, (Msg)msg);

    renderlabel(GadToolsBase, g, msg->gpr_RPort, data->labelplace);

    ReturnInt("Slider::Render", IPTR, retval);
}
Beispiel #4
0
IPTR AslProp__GM_RENDER(Class *cl, struct Gadget *g, struct gpRender *msg)
{
    struct AslPropData *data;
    IPTR retval;

    data = INST_DATA(cl, g);

    if (msg->gpr_Redraw == GREDRAW_REDRAW)
    {
        struct TagItem im_tags[] =
        {
            {IA_Width	, 0	},
            {IA_Height	, 0	},
            {TAG_DONE		}
        };
        WORD x, y, w, h;

        getgadgetcoords(g, msg->gpr_GInfo, &x, &y, &w, &h);

        x -= BORDERPROPSPACINGX;
        y -= BORDERPROPSPACINGY;
        w += BORDERPROPSPACINGX * 2;
        h += BORDERPROPSPACINGY * 2;

        im_tags[0].ti_Data = w;
        im_tags[1].ti_Data = h;

        SetAttrsA(data->frame, im_tags);

        DrawImageState(msg->gpr_RPort,
                       (struct Image *)data->frame,
                       x,
                       y,
                       IDS_NORMAL,
                       msg->gpr_GInfo->gi_DrInfo);

#if AVOID_FLICKER
        {
            struct IBox ibox, fbox;

            fbox.Left = x;
            fbox.Top = y;
            fbox.Width = w;
            fbox.Height = h;

            ibox.Left   = x + BORDERPROPSPACINGX;
            ibox.Top    = y + BORDERPROPSPACINGY;
            ibox.Width  = w - BORDERPROPSPACINGX * 2;
            ibox.Height = h - BORDERPROPSPACINGY * 2;

            PaintInnerFrame(msg->gpr_RPort,
                            msg->gpr_GInfo->gi_DrInfo,
                            data->frame,
                            &fbox,
                            &ibox,
                            msg->gpr_GInfo->gi_DrInfo->dri_Pens[BACKGROUNDPEN],
                            AslBase);

        }
#endif

    } /* if (msg->gpr_Redraw == GREDRAW_REDRAW) */

    retval = DoSuperMethodA(cl, (Object *)g, (Msg)msg);

    return retval;
}
Beispiel #5
0
void main()
{
	ULONG class,code;
	struct Gadget *gadget;
	struct IntuiMessage *message;
	struct DrawInfo *dri;
	BOOL running=TRUE;

	unless(Scr=LockPubScreen("Workbench")) LEAVE;
	unless(dri=GetScreenDrawInfo(Scr)) LEAVE;
	unless(SmartBitMapBase=OpenLibrary("images/smartbitmap.image",36L)) LEAVE;
	unless(ImClass=GetSmartBitMapClass()) LEAVE;

	GetRGB32(Scr->ViewPort.ColorMap,0,1,&pal[0].R);

	unless(Im=NewObject(ImClass,NULL,
		IA_Left,25,
		IA_Top,25,
		IA_Width,20,
		SMBM_Border,FALSE,
		SMBM_SelBorder,TRUE,
		SMBM_Screen,Scr,
		SMBM_BitMap,&TBCOLORWHEELBitMap,
//		SMBM_BitMap,&Size45UDBitMap,
		SMBM_Palette,pal,
		TAG_DONE)) LEAVE;
	unless(MainWnd=OpenWindowTags(NULL,
		WA_Left,0,
		WA_Top,0,
		WA_Width,600,
		WA_Height,200,
		WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_GADGETUP,
		WA_Flags,WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVATE|WFLG_SIZEGADGET,
		WA_CustomScreen,Scr,
		TAG_DONE)) LEAVE;

	DrawImageState(MainWnd->RPort,(struct Image *)Im,0,0,IDS_NORMAL,dri);

	while(running)
	{
		Wait(1L<<MainWnd->UserPort->mp_SigBit);
		while(message=GT_GetIMsg(MainWnd->UserPort))
		{
			class=message->Class;
			code=message->Code;
			gadget=(struct Gadget *)message->IAddress;
			GT_ReplyIMsg(message);
			switch(class)
			{
				case IDCMP_CLOSEWINDOW:
					running=FALSE;
					break;
			}
		}
	}
end:
	if(MainWnd)
	{
		CloseWindow(MainWnd);
	}
	if(Im) DisposeObject(Im);
	if(SmartBitMapBase) CloseLibrary(SmartBitMapBase);
	if(dri) FreeScreenDrawInfo(Scr,dri);
	if(Scr) UnlockPubScreen(NULL,Scr);
}
IPTR PUBLIC DispatchArrowImage(REG(a0, Class *cl), REG(a2, Object *o), REG(a1, Msg msg))
{
  struct ArrowIData *ad;
  struct ClassBase *cb;
  IPTR   retval = 0;

  ad = INST_DATA(cl,o);
  cb = (APTR)cl->cl_UserData;

  switch(msg->MethodID)
  {
    case OM_NEW:
      if ((retval = DoSuperMethodA(cl,o,msg)) != 0)
      {
        IM(retval)->Width = GetTagData(IA_Width,16,((struct opSet *)msg)->ops_AttrList);
        IM(retval)->Height = GetTagData(IA_Height,13,((struct opSet *)msg)->ops_AttrList);
        if (IM(retval)->Width < 10)
          IM(retval)->Width = 10;
        if (IM(retval)->Height < 8)
          IM(retval)->Height = 8;

        ad = INST_DATA(cl,retval);
        ad->ad_Type = GetTagData(SYSIA_Which,0,((struct opSet *)msg)->ops_AttrList);
        ad->ad_Frame = NewObject(NULL,"frameiclass",IA_FrameType, FRAME_BUTTON,
                                                    IA_Width,     IM(retval)->Width,
                                                    IA_Height,    IM(retval)->Height,
                                                    TAG_END);
      }
      break;
    case OM_DISPOSE:
      DisposeObject(ad->ad_Frame);
      retval = DoSuperMethodA(cl,o,msg);
      break;
    case IM_DRAW:
    case IM_DRAWFRAME:
      {
        struct impDraw *imp = (struct impDraw *)msg;
        long   x,y,w,h;

        x = IM(o)->LeftEdge+imp->imp_Offset.X;
        y = IM(o)->TopEdge+imp->imp_Offset.Y;
        w = IM(o)->Width-9;
        h = IM(o)->Height-5;
        if (!(w % 2))
          w++;
        DrawImageState(imp->imp_RPort,ad->ad_Frame,x,y,imp->imp_State,imp->imp_DrInfo);

        x += 4;
        y += 2;
        if (imp->imp_DrInfo)
          SetAPen(imp->imp_RPort,imp->imp_DrInfo->dri_Pens[TEXTPEN]);
        else
          SetAPen(imp->imp_RPort,1);

        if (ad->ad_Type == ADT_UP)
        {
          Move(imp->imp_RPort,x,y+h);     /* up arrow */
          Draw(imp->imp_RPort,x+w/2,y);
          Draw(imp->imp_RPort,x+w-1,y+h);
          Move(imp->imp_RPort,x+1,y+h);
          Draw(imp->imp_RPort,x+w/2+1,y);
          Draw(imp->imp_RPort,x+w,y+h);
        }
        else
        {
          Move(imp->imp_RPort,x,y);       /* down arrow */
          Draw(imp->imp_RPort,x+w/2,y+h);
          Draw(imp->imp_RPort,x+w-1,y);
          Move(imp->imp_RPort,x+1,y);
          Draw(imp->imp_RPort,x+w/2+1,y+h);
          Draw(imp->imp_RPort,x+w,y);
        }
      }
      break;
    default:
      retval = DoSuperMethodA(cl,o,msg);
  }
  return(retval);
}
Beispiel #7
0
IPTR GTText__GM_RENDER(Class *cl, struct Gadget *g, struct gpRender *msg)
{
    UWORD 		*pens = msg->gpr_GInfo->gi_DrInfo->dri_Pens;
    UBYTE 		textbuf[256], *str;
    struct TextData 	*data = INST_DATA(cl, g);
    WORD 		left, left2, top, width, height, numchars, tlength;
    struct TextFont 	*oldfont;
    struct RastPort 	*rp = msg->gpr_RPort;
    
    EnterFunc(bug("Text::Render()\n"));

    left   = g->LeftEdge;
    top    = g->TopEdge;
    width  = g->Width;
    height = g->Height;

    if (msg->gpr_Redraw == GREDRAW_REDRAW)
    {
        if (data->frame)
	{
	    DrawImageState(msg->gpr_RPort,
		    (struct Image *)data->frame,
		    left,
		    top,
		    IDS_NORMAL,
		    msg->gpr_GInfo->gi_DrInfo);
	}
	
	renderlabel(GadToolsBase, g, msg->gpr_RPort, data->labelplace);
    }
    
    if (data->toprint || (data->gadgetkind != TEXT_KIND))
    {
	/* preserve font */
	oldfont = rp->Font;
	SetFont(rp, data->font);

	str = textbuf;
	if (data->gadgetkind == TEXT_KIND)
	{
	    strncpy(str, (char *)data->toprint, sizeof(textbuf));
	    textbuf[sizeof(textbuf) - 1] = '\0';
	}
	else /* NUMERIC_KIND or label of SLIDER_KIND */
	{
	    RawDoFmt(data->format, &(data->toprint), (VOID_FUNC)AROS_ASMSYMNAME(puttostr), &str);
	}

	D(bug("Text formatted into: %s\n", textbuf));
	numchars = strlen(textbuf);

	if (data->flags & TEXTF_BORDER)
	{
    	    left += VBORDER + 1;
    	    top  += HBORDER + 1;
    	    width  = g->Width -  (VBORDER + 1) * 2;
    	    height = g->Height - (HBORDER + 1) * 2;
	}

	if (data->flags & TEXTF_CLIPPED)
	{
    	    struct TextExtent te;

    	    /* See how many chars fits into the display area */
    	    numchars = TextFit(rp, textbuf, numchars, &te, NULL, 1, width, g->Height);
	}

	tlength = TextLength(rp, textbuf, numchars);

	left2 = left;
	switch (data->justification)
	{
    	    case GTJ_LEFT:
    		break;
    	    case GTJ_RIGHT:
    		left2 += (width - tlength);
    		break;
    	    case GTJ_CENTER:
    		left2 += ((width - tlength) / 2);
    		break;
	}

	/* Render text */
	D(bug("Rendering text of lenghth %d at (%d, %d)\n", numchars, left, top));
	SetABPenDrMd(rp, pens[data->backpen], pens[data->backpen], JAM2);
	RectFill(rp, left, top, left + width - 1, top + height - 1);
	SetAPen(rp, pens[data->frontpen]);

	Move(rp, left2, 
    	     top + ((height - data->font->tf_YSize) / 2) + data->font->tf_Baseline);
	Text(rp, textbuf, numchars);

	SetFont(rp, oldfont);

    } /* if (data->toprint || (data->gadgetkind != TEXT_KIND)) */
    
    ReturnInt("Text::Render", IPTR, 0);
}