//Draws a button
void drawARDTButton (ARDTButton& pButton){
	if (pButton.imageIndex < 255){
		drawARDTButtonImage (pButton);
		return;
	}

	byte r, g, b;
	r = (byte)((pButton.bgcolor & 0xFF0000) >> 16);
	g = (byte)((pButton.bgcolor & 0x00FF00) >> 8);
	b = (byte)((pButton.bgcolor & 0x0000FF));
	fill(r,g,b); //fill 

	//button DRAWN is smaller than its zone
	RECT vDrawRect;
	byte vPadding = ((pButton.attributes & BUTTON_ATTRIBUTE_NOPADDING)> 0 ? 0 : 6);
	vDrawRect.top = pButton.rect.top + vPadding;
	vDrawRect.bottom = pButton.rect.bottom - vPadding;
	vDrawRect.left = pButton.rect.left + vPadding;
	vDrawRect.right = pButton.rect.right - vPadding;
	
	if ((pButton.attributes & BUTTON_ATTRIBUTE_BGGRADIENT)> 0){	
		//GRADIENT FILL
		noStroke();
		for (int i=vDrawRect.top; i < vDrawRect.bottom; i += BTN_FILL_STEP){
			byte vHeight = BTN_FILL_STEP;
			if (i + vHeight > vDrawRect.bottom) vHeight = vDrawRect.bottom - i;
			rect(vDrawRect.left,i,vDrawRect.right - vDrawRect.left,vHeight); 
			if (r > BTN_FILL_STEP) r -= BTN_FILL_STEP;
			if (g > BTN_FILL_STEP) g -= BTN_FILL_STEP;
			if (b > BTN_FILL_STEP) b -= BTN_FILL_STEP;
			fill(r,g,b); //fill 
		}
	}
	else {
		//UNIFORM PAINT
		rect(vDrawRect.left,vDrawRect.top,vDrawRect.right - vDrawRect.left,vDrawRect.bottom - vDrawRect.top); 	
	}

	if ((pButton.attributes & BUTTON_ATTRIBUTE_HASBORDER)> 0){
		//finally draw border
		stroke(180,180,180);
		noFill();
		rect(vDrawRect.left,vDrawRect.top,vDrawRect.right - vDrawRect.left,vDrawRect.bottom - vDrawRect.top); 
	}

	//last draw the text
	r = (pButton.forecolor & 0x00FF0000) >> 16;
	g = (pButton.forecolor & 0x0000FF00) >> 8;
	b = (pButton.forecolor & 0x000000FF);
	stroke(r,g,b);
	noFill();
	text(pButton.label,vDrawRect.left+4, vDrawRect.top + ((vDrawRect.bottom - vDrawRect.top) /2)); //print the character string 
}
Exemple #2
0
void setup()
{
	size(700, 500);


	colorMode(COLOR_MODE_HSB, width, 100, 100, 100);

	strokeWeight(0.2);
	noFill();
	//smooth();
	background(width);
	//frameRate(100);

	radius = 10;
	thickness = 0.5;


	x = 2;
	y = height / 2;
	z = height / 2;
	t = height / 2;

	amp = 5;
	angle = 0;
	i = 0;
}
//highlights a image button
void highlightARDTButtonImage (ARDTButton& pButton){
	noFill();
	stroke(200);
	rect(pButton.rect.left, pButton.rect.top, BUTTON_SPACE, BUTTON_SPACE);
	stroke(150);
	rect(pButton.rect.left+1, pButton.rect.top+1, BUTTON_SPACE-2, BUTTON_SPACE-2);
	stroke(100);
	rect(pButton.rect.left+2, pButton.rect.top+2, BUTTON_SPACE-4, BUTTON_SPACE-4);
	delay(100);
	stroke(0);
	rect(pButton.rect.left, pButton.rect.top, BUTTON_SPACE, BUTTON_SPACE);
	rect(pButton.rect.left+1, pButton.rect.top+1, BUTTON_SPACE-2, BUTTON_SPACE-2);
	rect(pButton.rect.left+2, pButton.rect.top+2, BUTTON_SPACE-4, BUTTON_SPACE-4);
}