summaryrefslogtreecommitdiffstats
path: root/menu_demo/button.c
diff options
context:
space:
mode:
Diffstat (limited to 'menu_demo/button.c')
-rw-r--r--menu_demo/button.c106
1 files changed, 86 insertions, 20 deletions
diff --git a/menu_demo/button.c b/menu_demo/button.c
index 588e0e1..f9d5ac0 100644
--- a/menu_demo/button.c
+++ b/menu_demo/button.c
@@ -13,7 +13,7 @@
-struct ButtonStruct ButtonCreate(int f_dXPos, int f_dYPos, int f_dWidth, int f_dHeight, char *f_pcTitle, int f_iType)
+struct ButtonStruct ButtonCreate(int f_dXPos, int f_dYPos, int f_dWidth, int f_dHeight, char *f_pcTitle, int f_iType, int f_iGroup, int f_iId)
{
struct ButtonStruct l_sButton;
@@ -23,6 +23,8 @@ struct ButtonStruct ButtonCreate(int f_dXPos, int f_dYPos, int f_dWidth, int f_d
l_sButton.m_iType = f_iType;
l_sButton.m_dHeight = f_dHeight;
l_sButton.m_dWidth = f_dWidth;
+ l_sButton.m_iGroup = f_iGroup;
+ l_sButton.m_iId = f_iId;
// copy title
memset(&l_sButton.m_pcTitle, 0, sizeof(l_sButton.m_pcTitle));
@@ -66,7 +68,6 @@ struct ButtonStruct ButtonCreate(int f_dXPos, int f_dYPos, int f_dWidth, int f_d
l_sButton.m_dWidth = f_dWidth;
break;
- case BUTTON_LABEL:
default:
break;
}
@@ -80,14 +81,6 @@ struct ButtonStruct ButtonCreate(int f_dXPos, int f_dYPos, int f_dWidth, int f_d
-int ButtonGetType(struct ButtonStruct *f_sButton)
-{
- return f_sButton->m_iType;
-
-} // ButtonGetType
-
-
-
void ButtonClickRender(struct ButtonStruct *f_sButton)
{
char l_pcTitle[BUTTON_MAX_TITLE];
@@ -95,6 +88,7 @@ void ButtonClickRender(struct ButtonStruct *f_sButton)
int l_iImgWidth, l_iImageIdLeft, l_iImageIdCenter, l_iImageIdRight;
int l_iLen, l_iXOffset, l_iYOffset;
double l_dXOffset, l_dYOffset;
+ struct ColorStruct l_sColor = {0, 0, 0};
// copy button attributes
double l_dCnWdt = f_sButton->m_dCenterWidth;
@@ -179,7 +173,8 @@ void ButtonClickRender(struct ButtonStruct *f_sButton)
glPrint(f_sButton->m_dXPos + l_iXOffset,
f_sButton->m_dYPos + l_iYOffset,
- f_sButton->m_pcTitle);
+ f_sButton->m_pcTitle,
+ l_sColor);
} // ButtonClickRender
@@ -188,17 +183,14 @@ void ButtonClickRender(struct ButtonStruct *f_sButton)
void ButtonRadioRender(struct ButtonStruct *f_sButton)
{
struct BitmapStruct *l_sImgButton;
- int l_iLen, l_iXOffset, l_iYOffset, l_iImageId;
+ int l_iXOffset, l_iYOffset, l_iImageId;
// copy button attributes
double l_dWidth = f_sButton->m_dWidth;
double l_dHeight = f_sButton->m_dHeight;
double l_dXPos = f_sButton->m_dXPos;
double l_dYPos = f_sButton->m_dYPos;
-
- l_iLen = (int)strlen(f_sButton->m_pcTitle);
- l_iXOffset = (int)(f_sButton->m_dWidth + FONT_SPACING);
- l_iYOffset = (int)(0.5 * f_sButton->m_dHeight - 0.5 * FONT_HEIGHT);
+ struct ColorStruct l_sColor = {0.2, 0.4, 0.8};
glColor3d(1, 1, 1);
@@ -238,9 +230,13 @@ void ButtonRadioRender(struct ButtonStruct *f_sButton)
glEnd();
}
+ l_iXOffset = (int)f_sButton->m_dWidth;
+ l_iYOffset = (int)(0.5 * f_sButton->m_dHeight - 0.5 * FONT_HEIGHT);
+
glPrint(f_sButton->m_dXPos + l_iXOffset,
f_sButton->m_dYPos + l_iYOffset,
- f_sButton->m_pcTitle);
+ f_sButton->m_pcTitle,
+ l_sColor);
} // ButtonRadioRender
@@ -261,7 +257,6 @@ void ButtonRender(struct ButtonStruct *f_sButton)
ButtonRadioRender(f_sButton);
break;
- case BUTTON_LABEL:
default:
break;
}
@@ -286,16 +281,87 @@ void ButtonExit(struct ButtonStruct *f_sButton)
+void ButtonClickPress(struct ButtonStruct *f_sButton)
+{
+ if (!f_sButton->m_bPressed) {
+ ButtonEnable(f_sButton);
+ }
+
+} // ButtonClickPress
+
+
+
+void ButtonRadioPress(struct ButtonStruct *f_sButton)
+{
+ int i = 0;
+
+ if (!f_sButton->m_bPressed)
+ {
+ ButtonEnable(f_sButton);
+ }
+
+} // ButtonClickPress
+
+
+
void ButtonPress(struct ButtonStruct *f_sButton)
{
- f_sButton->m_bPressed = !f_sButton->m_bPressed;
+ int l_iType = f_sButton->m_iType;
+
+ switch (l_iType)
+ {
+ case BUTTON_CLICK:
+ ButtonClickPress(f_sButton);
+ break;
+
+ case BUTTON_RADIO:
+ ButtonRadioPress(f_sButton);
+ break;
+
+ default:
+ break;
+ }
} // ButtonPress
+void ButtonClickRelease(struct ButtonStruct *f_sButton)
+{
+ ButtonDisable(f_sButton);
+
+} // ButtonClickRelease
+
+
+
void ButtonRelease(struct ButtonStruct *f_sButton)
{
+ int l_iType = f_sButton->m_iType;
+
+ switch (l_iType)
+ {
+ case BUTTON_CLICK:
+ ButtonClickRelease(f_sButton);
+ break;
+
+ case BUTTON_RADIO:
+ default:
+ break;
+ }
+
+} // ButtonRelease
+
+
+
+void ButtonEnable(struct ButtonStruct *f_sButton)
+{
+ f_sButton->m_bPressed = TRUE;
+
+} // ButtonEnable
+
+
+void ButtonDisable(struct ButtonStruct *f_sButton)
+{
f_sButton->m_bPressed = FALSE;
-} // ButtonPress
+} // ButtonDisable \ No newline at end of file