void MS_Popup_Menu_Draw(void) { struct MS_Popup_Menu_Menu *menu; int c_r, c_b; int z; menu = popup_menus; c_r = RGBA_TO_COLOR(255, 0, 0, 255); c_b = RGBA_TO_COLOR(0, 0, 255, 255); z = 0; while (menu) { if (menu->type == 0) Draw_AlphaCircleFillRGB(menu->x, menu->y, MSP_RADIUS -2, c_r); else Draw_AlphaCircleFillRGB(menu->x, menu->y, MSP_RADIUS -2, c_b); menu = menu->next; z++; } }
// // Label - Draws a label control. // int EZ_label_OnDraw(ez_control_t *self, void *ext_event_info) { int x, y, i = 0; char line[LABEL_LINE_SIZE]; ez_label_t *label = (ez_label_t *)self; int scaled_char_size = label->scaled_char_size; int last_index = -1; int curr_row = 0; int curr_col = 0; clrinfo_t text_color = {RGBA_TO_COLOR(255, 255, 255, 255), 0}; // TODO : Set this in the struct instead. color_t selection_color = RGBA_TO_COLOR(178, 0, 255, 125); color_t caret_color = RGBA_TO_COLOR(255, 0, 0, 125); // Let the super class draw first. EZ_control_OnDraw(self, NULL); // Get the position we're drawing at. EZ_control_GetDrawingPosition(self, &x, &y); // Find any newlines and draw line by line. for (i = 0; i <= label->text_length; i++) { // Draw selection markers. if (label->ext_flags & label_selectable) { if (((label->select_start > -1) && (label->select_end > -1) // Is something selected at all? && (label->select_end != label->select_start)) // Only highlight if we have at least 1 char selected. && (((i >= label->select_start) && (i < label->select_end)) // Is this index selected? || ((i >= label->select_end) && (i < label->select_start))) ) { // If this is one of the selected letters, draw a selection thingie behind it. // TODO : Make this an XOR drawing ontop of the text instead? Draw_AlphaFillRGB( x + (curr_col * scaled_char_size), y + (curr_row * scaled_char_size), scaled_char_size, scaled_char_size, selection_color); } if (i == label->caret_pos.index) { // Draw the caret. Draw_AlphaFillRGB( x + (curr_col * scaled_char_size), y + (curr_row * scaled_char_size), max(5, Q_rint(scaled_char_size * 0.1)), scaled_char_size, caret_color); } } if (i == label->wordwraps[curr_row].index || label->text[i] == '\0') { // We found the end of a line, copy the contents of the line to the line buffer. snprintf(line, min(LABEL_LINE_SIZE, (i - last_index) + 1), "%s", (label->text + last_index + 1)); last_index = i; // Skip the newline character if (label->ext_flags & label_largefont) { Draw_BigString(x, y + (curr_row * scaled_char_size), line, &text_color, 1, label->scale, 1, 0); } else { Draw_SColoredString(x, y + (curr_row * scaled_char_size), str2wcs(line), &text_color, 1, false, label->scale); } curr_row++; curr_col = 0; } else { curr_col++; } } // TODO : Remove this test stuff. { char tmp[1024]; int sublen = abs(label->select_end - label->select_start); if (sublen > 0) { snprintf(tmp, sublen + 1, "%s", label->text + min(label->select_start, label->select_end)); Draw_String(x + (self->width / 2), y + (self->height / 2) + 8, tmp); } } CONTROL_EVENT_HANDLER_CALL(NULL, self, ez_control_t, OnDraw, NULL); return 0; }
// // Label - Sets the text color of a label. // void EZ_label_SetTextColor(ez_label_t *label, byte r, byte g, byte b, byte alpha) { label->color.c = RGBA_TO_COLOR(r, g, b, alpha); }