Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F629751
select-list.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
Unknown
Size
9 KB
Referenced Files
None
Subscribers
None
select-list.h
View Options
#ifndef _gui_select_list_h
#define _gui_select_list_h
#include
<string>
#include
<vector>
#include
"coordinate.h"
#include
"r-tech1/pointer.h"
class
Font
;
namespace
Gui
{
/*! Select Item pure virtual interface */
class
SelectItem
{
public
:
SelectItem
();
virtual
~
SelectItem
();
virtual
void
draw
(
int
x
,
int
y
,
int
width
,
int
height
,
const
Graphics
::
Bitmap
&
,
const
Font
&
)
const
=
0
;
virtual
bool
isEmpty
()
const
=
0
;
};
/*! Select List Interface */
class
SelectListInterface
{
public
:
SelectListInterface
();
virtual
~
SelectListInterface
();
//! Logic
virtual
void
act
()
=
0
;
//! Render
virtual
void
render
(
const
Graphics
::
Bitmap
&
,
const
Font
&
)
const
=
0
;
//! Add item
virtual
void
addItem
(
const
Util
::
ReferenceCount
<
SelectItem
>
&
)
=
0
;
//! Add vector of items
virtual
void
addItems
(
const
std
::
vector
<
Util
::
ReferenceCount
<
SelectItem
>
>
&
)
=
0
;
//! Get vector of items
virtual
const
std
::
vector
<
Util
::
ReferenceCount
<
SelectItem
>
>
&
getItems
()
const
=
0
;
//! Get specific item
virtual
const
Util
::
ReferenceCount
<
SelectItem
>
getItem
(
unsigned
int
index
)
const
=
0
;
//! Get specific item
virtual
const
Util
::
ReferenceCount
<
SelectItem
>
getItemByCursor
(
unsigned
int
index
)
const
=
0
;
virtual
void
clearItems
()
=
0
;
virtual
void
setCellDimensions
(
int
width
,
int
height
)
=
0
;
virtual
void
setCellSpacing
(
int
x
,
int
y
)
=
0
;
virtual
void
setCellMargins
(
int
x
,
int
y
)
=
0
;
virtual
void
setStartingOffset
(
int
x
,
int
y
)
=
0
;
virtual
void
setCursors
(
int
total
)
=
0
;
virtual
int
totalCursors
()
const
=
0
;
enum
CursorState
{
Disabled
,
Active
,
Done
,
Invalid
,
};
/* Get the location in pixels of an item where it would be drawn */
virtual
void
getDrawLocation
(
const
Util
::
ReferenceCount
<
SelectItem
>
&
item
,
int
*
x
,
int
*
y
)
const
=
0
;
virtual
void
setCurrentIndex
(
unsigned
int
cursor
,
unsigned
int
location
)
=
0
;
virtual
unsigned
int
getCurrentIndex
(
unsigned
int
cursor
)
const
=
0
;
virtual
void
setCurrentState
(
unsigned
int
cursor
,
const
CursorState
&
)
=
0
;
virtual
const
CursorState
getCurrentState
(
unsigned
int
cursor
)
const
=
0
;
virtual
bool
up
(
unsigned
int
cursor
)
=
0
;
virtual
bool
down
(
unsigned
int
cursor
)
=
0
;
virtual
bool
left
(
unsigned
int
cursor
)
=
0
;
virtual
bool
right
(
unsigned
int
cursor
)
=
0
;
//! Has more low/high
virtual
bool
hasMoreLow
()
const
=
0
;
virtual
bool
hasMoreHigh
()
const
=
0
;
//! Get dimensions
virtual
int
getWidth
()
=
0
;
virtual
int
getHeight
()
=
0
;
//! Access Empty
virtual
inline
void
setAccessEmpty
(
bool
access
){
this
->
accessEmpty
=
access
;
}
//! Get Occupy empty
virtual
inline
bool
getAccessEmpty
()
const
{
return
this
->
accessEmpty
;
}
//! Draw Empty
virtual
inline
void
setDrawEmpty
(
bool
draw
){
this
->
drawEmpty
=
draw
;
}
//! Get Draw empty
virtual
inline
bool
getDrawEmpty
()
const
{
return
this
->
drawEmpty
;
}
//! Set wrap
virtual
inline
void
setWrap
(
bool
wrap
){
this
->
allowWrap
=
wrap
;
}
//! Get wrap
virtual
inline
bool
getWrap
()
const
{
return
this
->
allowWrap
;
}
protected
:
//! Can occupy empty cells/spaces
bool
accessEmpty
;
//! Can draw empty cells
bool
drawEmpty
;
//! Is wrappable
bool
allowWrap
;
};
/*! Cursor handler */
class
Cursor
{
public
:
Cursor
(
unsigned
int
index
,
const
SelectListInterface
::
CursorState
&
);
~
Cursor
();
Cursor
(
const
Cursor
&
);
const
Cursor
&
operator
=
(
const
Cursor
&
);
void
setIndex
(
unsigned
int
index
);
unsigned
int
getIndex
()
const
;
void
increment
();
void
decrement
();
void
setState
(
const
SelectListInterface
::
CursorState
&
);
const
SelectListInterface
::
CursorState
&
getState
()
const
;
private
:
unsigned
int
index
;
SelectListInterface
::
CursorState
state
;
};
/*! Simple list */
class
SimpleSelect
:
public
SelectListInterface
{
public
:
SimpleSelect
();
virtual
~
SimpleSelect
();
virtual
void
act
();
virtual
void
render
(
const
Graphics
::
Bitmap
&
,
const
Font
&
)
const
;
virtual
void
addItem
(
const
Util
::
ReferenceCount
<
SelectItem
>
&
);
virtual
void
addItems
(
const
std
::
vector
<
Util
::
ReferenceCount
<
SelectItem
>
>
&
);
virtual
const
std
::
vector
<
Util
::
ReferenceCount
<
SelectItem
>
>
&
getItems
()
const
;
virtual
const
Util
::
ReferenceCount
<
SelectItem
>
getItem
(
unsigned
int
index
)
const
;
virtual
const
Util
::
ReferenceCount
<
SelectItem
>
getItemByCursor
(
unsigned
int
cursor
)
const
;
virtual
void
clearItems
();
virtual
void
setCellDimensions
(
int
width
,
int
height
);
virtual
void
setCellSpacing
(
int
x
,
int
y
);
virtual
void
setCellMargins
(
int
x
,
int
y
);
virtual
void
setStartingOffset
(
int
x
,
int
y
);
virtual
void
setCursors
(
int
total
);
virtual
int
totalCursors
()
const
;
virtual
void
setCurrentIndex
(
unsigned
int
cursor
,
unsigned
int
location
);
virtual
unsigned
int
getCurrentIndex
(
unsigned
int
cursor
)
const
;
virtual
void
setCurrentState
(
unsigned
int
cursor
,
const
SelectListInterface
::
CursorState
&
);
virtual
const
SelectListInterface
::
CursorState
getCurrentState
(
unsigned
int
cursor
)
const
;
virtual
void
getDrawLocation
(
const
Util
::
ReferenceCount
<
SelectItem
>
&
item
,
int
*
x
,
int
*
y
)
const
;
virtual
bool
up
(
unsigned
int
cursor
);
virtual
bool
down
(
unsigned
int
cursor
);
virtual
bool
left
(
unsigned
int
cursor
);
virtual
bool
right
(
unsigned
int
cursor
);
virtual
bool
hasMoreLow
()
const
;
virtual
bool
hasMoreHigh
()
const
;
virtual
int
getWidth
();
virtual
int
getHeight
();
virtual
void
setViewable
(
unsigned
int
viewable
){
this
->
viewable
=
viewable
;
}
virtual
unsigned
int
getViewable
()
const
{
return
this
->
viewable
;
}
enum
Layout
{
Vertical
,
Horizontal
,
};
virtual
void
setLayout
(
const
Layout
&
layout
){
this
->
layout
=
layout
;
}
virtual
const
Layout
&
getLayout
()
const
{
return
this
->
layout
;
}
virtual
void
setScrollOffset
(
int
offset
){
this
->
scrollOffset
=
offset
;
}
virtual
int
getScrollOffset
()
const
{
return
this
->
scrollOffset
;
}
protected
:
bool
checkCursor
(
unsigned
int
cursor
)
const
;
void
calculateLeft
(
unsigned
int
cursor
);
void
calculateRight
(
unsigned
int
cursor
);
Layout
layout
;
unsigned
int
viewable
;
unsigned
int
currentTop
;
int
scrollOffset
;
int
cellWidth
,
cellHeight
;
int
cellSpacingX
,
cellSpacingY
;
int
cellMarginX
,
cellMarginY
;
int
startOffsetX
,
startOffsetY
;
std
::
vector
<
Cursor
>
cursors
;
std
::
vector
<
Util
::
ReferenceCount
<
SelectItem
>
>
items
;
};
/*! Select Grid */
class
GridSelect
:
public
SelectListInterface
{
public
:
GridSelect
();
virtual
~
GridSelect
();
virtual
void
act
();
virtual
void
render
(
const
Graphics
::
Bitmap
&
,
const
Font
&
)
const
;
virtual
void
addItem
(
const
Util
::
ReferenceCount
<
SelectItem
>
&
);
virtual
void
addItems
(
const
std
::
vector
<
Util
::
ReferenceCount
<
SelectItem
>
>
&
);
virtual
const
std
::
vector
<
Util
::
ReferenceCount
<
SelectItem
>
>
&
getItems
()
const
;
virtual
const
Util
::
ReferenceCount
<
SelectItem
>
getItem
(
unsigned
int
index
)
const
;
virtual
const
Util
::
ReferenceCount
<
SelectItem
>
getItemByCursor
(
unsigned
int
cursor
)
const
;
virtual
void
clearItems
();
virtual
void
setCellDimensions
(
int
width
,
int
height
);
virtual
void
setCellSpacing
(
int
x
,
int
y
);
virtual
void
setCellMargins
(
int
x
,
int
y
);
virtual
void
setStartingOffset
(
int
x
,
int
y
);
virtual
void
setCursors
(
int
total
);
virtual
int
totalCursors
()
const
;
virtual
void
setCurrentIndex
(
unsigned
int
cursor
,
unsigned
int
location
);
virtual
unsigned
int
getCurrentIndex
(
unsigned
int
cursor
)
const
;
virtual
void
setCurrentState
(
unsigned
int
cursor
,
const
SelectListInterface
::
CursorState
&
);
virtual
const
SelectListInterface
::
CursorState
getCurrentState
(
unsigned
int
cursor
)
const
;
virtual
void
getDrawLocation
(
const
Util
::
ReferenceCount
<
SelectItem
>
&
item
,
int
*
x
,
int
*
y
)
const
;
virtual
bool
up
(
unsigned
int
cursor
);
virtual
bool
down
(
unsigned
int
cursor
);
virtual
bool
left
(
unsigned
int
cursor
);
virtual
bool
right
(
unsigned
int
cursor
);
virtual
bool
hasMoreLow
()
const
;
virtual
bool
hasMoreHigh
()
const
;
virtual
int
getWidth
();
virtual
int
getHeight
();
enum
Layout
{
Static
,
InfiniteHorizontal
,
InfiniteVertical
,
};
virtual
void
setLayout
(
const
Layout
&
layout
){
this
->
layout
=
layout
;
}
virtual
const
Layout
&
getLayout
()
const
{
return
this
->
layout
;
}
virtual
void
setGridSize
(
int
x
,
int
y
){
this
->
gridX
=
x
;
this
->
gridY
=
y
;
}
virtual
const
int
getGridX
()
const
{
return
this
->
gridX
;
}
virtual
const
int
getGridY
()
const
{
return
this
->
gridY
;
}
protected
:
bool
moveUp
(
unsigned
int
cursor
);
bool
moveDown
(
unsigned
int
cursor
);
bool
moveLeft
(
unsigned
int
cursor
);
bool
moveRight
(
unsigned
int
cursor
);
bool
checkCursor
(
unsigned
int
cursor
)
const
;
Layout
layout
;
int
gridX
,
gridY
;
int
cellWidth
,
cellHeight
;
int
cellSpacingX
,
cellSpacingY
;
int
cellMarginX
,
cellMarginY
;
int
startOffsetX
,
startOffsetY
;
unsigned
int
offset
;
std
::
vector
<
Cursor
>
cursors
;
std
::
vector
<
Util
::
ReferenceCount
<
SelectItem
>
>
items
;
};
}
#endif
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Sun, Nov 15, 7:42 AM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
129046
Default Alt Text
select-list.h (9 KB)
Attached To
Mode
R75 R-Tech1
Attached
Detach File
Event Timeline