123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- //
- // Copyright 2020 Electronic Arts Inc.
- //
- // TiberianDawn.DLL and RedAlert.dll and corresponding source code is free
- // software: you can redistribute it and/or modify it under the terms of
- // the GNU General Public License as published by the Free Software Foundation,
- // either version 3 of the License, or (at your option) any later version.
- // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
- // in the hope that it will be useful, but with permitted additional restrictions
- // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
- // distributed with this program. You should have received a copy of the
- // GNU General Public License along with permitted additional restrictions
- // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
- /* $Header: F:\projects\c&c\vcs\code\colrlist.cpv 1.9 16 Oct 1995 16:50:02 JOE_BOSTIC $ */
- /***********************************************************************************************
- *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
- ***********************************************************************************************
- * *
- * Project Name : Command & Conquer *
- * *
- * File Name : LIST.CPP *
- * *
- * Programmer : Joe L. Bostic *
- * *
- * Start Date : 01/15/95 *
- * *
- * Last Update : April 19, 1995 [BRR] *
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * ColorListClass::Add_Item -- Adds an item to the list *
- * ColorListClass::ColorListClass -- Class constructor *
- * ColorListClass::Draw_Entry -- Draws one text line *
- * ColorListClass::Remove_Item -- Removes an item from the list *
- * ColorListClass::Set_Selected_Style -- tells how to draw selected item *
- * ColorListClass::~ColorListClass -- Class destructor *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #include "function.h"
- /***************************************************************************
- * ColorListClass::ColorListClass -- class constructor *
- * *
- * INPUT: *
- * id button ID *
- * x,y upper-left corner, in pixels *
- * w,h width, height, in pixels *
- * list ptr to array of char strings to list *
- * flags flags for mouse, style of listbox *
- * up,down pointers to shapes for up/down buttons *
- * *
- * OUTPUT: *
- * none. *
- * *
- * WARNINGS: *
- * none. *
- * *
- * HISTORY: 01/05/1995 MML : Created. *
- *=========================================================================*/
- ColorListClass::ColorListClass (int id, int x, int y, int w, int h,
- TextPrintType flags, void const * up, void const * down) :
- ListClass (id, x, y, w, h, flags, up, down)
- {
- Style = SELECT_HIGHLIGHT;
- SelectColor = -1;
- }
- /***************************************************************************
- * ColorListClass::~ColorListClass -- Class destructor *
- * *
- * INPUT: *
- * none. *
- * *
- * OUTPUT: *
- * none. *
- * *
- * WARNINGS: *
- * none. *
- * *
- * HISTORY: *
- * 04/19/1995 BRR : Created. *
- *=========================================================================*/
- ColorListClass::~ColorListClass(void)
- {
- Colors.Clear();
- }
- /***************************************************************************
- * ColorListClass::Add_Item -- Adds an item to the list *
- * *
- * INPUT: *
- * text text to add to list *
- * color color for item *
- * *
- * OUTPUT: *
- * position of item in the list *
- * *
- * WARNINGS: *
- * none. *
- * *
- * HISTORY: *
- * 04/19/1995 BRR : Created. *
- *=========================================================================*/
- int ColorListClass::Add_Item(char const * text, char color)
- {
- Colors.Add(color);
- return(ListClass::Add_Item(text));
- }
- /***************************************************************************
- * ColorListClass::Add_Item -- Adds an item to the list *
- * *
- * INPUT: *
- * text text to add to list *
- * color color for item *
- * *
- * OUTPUT: *
- * position of item in the list *
- * *
- * WARNINGS: *
- * none. *
- * *
- * HISTORY: *
- * 04/19/1995 BRR : Created. *
- *=========================================================================*/
- int ColorListClass::Add_Item(int text, char color)
- {
- Colors.Add(color);
- return(ListClass::Add_Item(text));
- }
- /***************************************************************************
- * ColorListClass::Remove_Item -- Removes an item from the list *
- * *
- * INPUT: *
- * text ptr to item to remove *
- * *
- * OUTPUT: *
- * none. *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 04/19/1995 BRR : Created. *
- *=========================================================================*/
- void ColorListClass::Remove_Item(char const * text)
- {
- int index = List.ID(text);
- if (index != -1) {
- Colors.Delete(index);
- ListClass::Remove_Item(text);
- }
- }
- /***************************************************************************
- * ColorListClass::Set_Selected_Style -- tells how to draw selected item *
- * *
- * INPUT: *
- * style style to draw *
- * color color to draw the special style in; -1 = use item's color*
- * *
- * OUTPUT: *
- * none. *
- * *
- * WARNINGS: *
- * none. *
- * *
- * HISTORY: *
- * 04/19/1995 BRR : Created. *
- *=========================================================================*/
- void ColorListClass::Set_Selected_Style(SelectStyleType style, int color)
- {
- Style = style;
- SelectColor = color;
- }
- /***************************************************************************
- * ColorListClass::Draw_Entry -- Draws one text line *
- * *
- * INPUT: *
- * index index into List of item to draw *
- * x,y x,y coords to draw at *
- * width maximum width allowed for text *
- * selected true = this item is selected *
- * *
- * OUTPUT: *
- * none. *
- * *
- * WARNINGS: *
- * none. *
- * *
- * HISTORY: *
- * 04/19/1995 BRR : Created. *
- *=========================================================================*/
- void ColorListClass::Draw_Entry(int index, int x, int y, int width, int selected)
- {
- int color;
- /*
- ** Draw a non-selected item in its color
- */
- if (!selected) {
- Conquer_Clip_Text_Print(List[index], x, y, Colors[index], TBLACK, TextFlags, width, Tabs);
- return;
- }
- /*
- ** For selected items, choose the right color & style:
- */
- if (SelectColor==-1) {
- color = Colors[index];
- } else {
- color = SelectColor;
- }
- switch (Style) {
- /*
- ** NONE: Just print the string in its native color
- */
- case SELECT_NONE:
- Conquer_Clip_Text_Print(List[index], x, y, Colors[index], TBLACK, TextFlags, width, Tabs);
- break;
- /*
- ** HIGHLIGHT: Draw the string in the highlight color (SelectColor must
- ** be set)
- */
- case SELECT_HIGHLIGHT:
- if (TextFlags & TPF_6PT_GRAD) {
- Conquer_Clip_Text_Print(List[index], x, y, color, TBLACK, TextFlags | TPF_BRIGHT_COLOR, width, Tabs);
- } else {
- Conquer_Clip_Text_Print(List[index], x, y, color, TBLACK, TextFlags, width, Tabs);
- }
- break;
- /*
- ** BOX: Draw a box around the item in the current select color
- */
- case SELECT_BOX:
- LogicPage->Draw_Rect (x, y, x + width - 2, y + LineHeight - 2, color);
- Conquer_Clip_Text_Print(List[index], x, y, Colors[index], TBLACK, TextFlags, width, Tabs);
- break;
- /*
- ** BAR: draw a color bar under the text
- */
- case SELECT_BAR:
- if (TextFlags & TPF_6PT_GRAD) {
- LogicPage->Fill_Rect (x, y, x + width - 1, y + LineHeight - 1, SelectColor);
- Conquer_Clip_Text_Print(List[index], x, y, Colors[index], TBLACK, TextFlags | TPF_BRIGHT_COLOR, width, Tabs);
- } else {
- LogicPage->Fill_Rect (x, y, x + width - 2, y + LineHeight - 2, SelectColor);
- Conquer_Clip_Text_Print(List[index], x, y, Colors[index], TBLACK, TextFlags, width, Tabs);
- }
- break;
- /*
- ** INVERT: Draw text as the background color on foreground color
- */
- case SELECT_INVERT:
- if (TextFlags & TPF_6PT_GRAD) {
- LogicPage->Fill_Rect (x, y, x + width - 1, y + LineHeight - 1, Colors[index]);
- Conquer_Clip_Text_Print(List[index], x, y, BLACK, TBLACK, TextFlags, width, Tabs);
- } else {
- LogicPage->Fill_Rect (x, y, x + width - 2, y + LineHeight - 2, Colors[index]);
- Conquer_Clip_Text_Print(List[index], x, y, LTGREY, TBLACK, TextFlags, width, Tabs);
- }
- break;
- }
- }
|