示例#1
0
void gwinRadioDraw_Radio(GWidgetObject *gw, void *param) {
	#define gcw			((GRadioObject *)gw)
	coord_t				ld, df;
	const GColorSet *	pcol;
	(void)				param;

	if (gw->g.vmt != (gwinVMT *)&radioVMT) return;
	pcol = getDrawColors(gw);

	ld = gw->g.width < gw->g.height ? gw->g.width : gw->g.height;

	#if GDISP_NEED_CIRCLE
		df = (ld-1)/2;
		gdispGFillArea(gw->g.display, gw->g.x, gw->g.y, ld, ld, gw->pstyle->background);
		gdispGDrawCircle(gw->g.display, gw->g.x+df, gw->g.y+df, df, pcol->edge);

		if (gw->g.flags & GRADIO_FLG_PRESSED)
			gdispGFillCircle(gw->g.display, gw->g.x+df, gw->g.y+df, df <= 2 ? 1 : (df-2), pcol->fill);
	#else
		gdispGFillArea(gw->g.display, gw->g.x+1, gw->g.y+1, ld, ld-2, gw->pstyle->background);
		gdispGDrawBox(gw->g.display, gw->g.x, gw->g.y, ld, ld, pcol->edge);

		df = ld < 4 ? 1 : 2;
		if (gw->g.flags & GRADIO_FLG_PRESSED)
			gdispGFillArea(gw->g.display, gw->g.x+df, gw->g.y+df, ld-2*df, ld-2*df, pcol->fill);
	#endif

	gdispGFillStringBox(gw->g.display, gw->g.x+ld+1, gw->g.y, gw->g.width-ld-1, gw->g.height, gw->text, gw->g.font, pcol->text, gw->pstyle->background, justifyLeft);
	#undef gcw
}
示例#2
0
static void pointto(GGraphObject *gg, coord_t x, coord_t y, const GGraphPointStyle *style) {
	if (style->type == GGRAPH_POINT_NONE)
		return;

	// Convert to device space. Note the y-axis is inverted.
	x += gg->g.x + gg->xorigin;
	y = gg->g.y + gg->g.height - 1 - gg->yorigin - y;

	if (style->size <= 1) {
		gdispGDrawPixel(gg->g.display, x, y, style->color);
		return;
	}

	switch(style->type) {
	case GGRAPH_POINT_SQUARE:
		gdispGDrawBox(gg->g.display, x-style->size, y-style->size, 2*style->size, 2*style->size, style->color);
		break;
#if GDISP_NEED_CIRCLE
	case GGRAPH_POINT_CIRCLE:
		gdispGDrawCircle(gg->g.display, x, y, style->size, style->color);
		break;
#endif
	case GGRAPH_POINT_DOT:
	default:
		gdispGDrawPixel(gg->g.display, x, y, style->color);
		break;
	}
}