Mana
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
BrowserBox Class Reference

A simple browser box able to handle links and forward events to the parent conteiner. More...

#include <browserbox.h>

Inheritance diagram for BrowserBox:

Public Types

enum  Mode { AUTO_SIZE , AUTO_WRAP }
 
enum  LinkHighlightMode { UNDERLINE = 1 , BACKGROUND = 2 }
 Highlight modes for links. More...
 

Public Member Functions

 BrowserBox (Mode mode=AUTO_SIZE)
 
 ~BrowserBox () override
 
void setLinkHandler (LinkHandler *handler)
 Sets the handler for links.
 
void setPalette (int palette)
 
void setHighlightMode (unsigned int mode)
 Sets the Highlight mode for links.
 
void setWrapIndent (int indent)
 Sets the wrap indent for the browser box.
 
void setShadowedText (bool shadows)
 Sets whether the font will use a shadow for text.
 
void setOutlinedText (bool outline)
 Sets whether the font will use a shadow for text.
 
void setMaxRows (unsigned maxRows)
 Sets the maximum numbers of rows in the browser box.
 
void disableLinksAndUserColors ()
 Disable links & user defined colors to be used in chat input.
 
void setEnableKeys (bool enable)
 Enable or disable the replacement of keys.
 
void addRows (std::string_view rows)
 Adds one or more text rows to the browser, separated by '
'.
 
void addRow (std::string_view row)
 Adds a text row to the browser.
 
void clearRows ()
 Remove all rows.
 
void mousePressed (gcn::MouseEvent &event) override
 Handles mouse actions.
 
void mouseMoved (gcn::MouseEvent &event) override
 
void mouseExited (gcn::MouseEvent &event) override
 
void draw (gcn::Graphics *graphics) override
 Draws the browser box.
 
void drawFrame (gcn::Graphics *) override
 Overridden to avoid drawing the default frame.
 

Private Member Functions

void relayoutText ()
 Relayouts all text rows and returns the new height of the BrowserBox.
 
void layoutTextRow (TextRow &row, LayoutContext &context)
 Layers out the given row of text starting at the given context position.
 
void updateHoveredLink (int x, int y)
 
void maybeRelayoutText ()
 

Private Attributes

std::deque< TextRowmTextRows
 
LinkHandlermLinkHandler = nullptr
 
int mPalette = 0
 
Mode mMode
 
unsigned int mHighlightMode = UNDERLINE | BACKGROUND
 
int mWrapIndent = 0
 
bool mShadows = false
 
bool mOutline = false
 
bool mUseLinksAndUserColors = true
 
bool mEnableKeys = false
 
std::optional< BrowserLinkmHoveredLink
 
unsigned int mMaxRows = 0
 
int mLastLayoutWidth = 0
 
Timer mLayoutTimer
 

Detailed Description

A simple browser box able to handle links and forward events to the parent conteiner.

Definition at line 72 of file browserbox.h.

Member Enumeration Documentation

◆ LinkHighlightMode

Highlight modes for links.

This can be used for a bitmask.

Enumerator
UNDERLINE 
BACKGROUND 

Definition at line 163 of file browserbox.h.

◆ Mode

Enumerator
AUTO_SIZE 
AUTO_WRAP 

Maybe it needs a fix or to be redone.

Definition at line 76 of file browserbox.h.

Constructor & Destructor Documentation

◆ BrowserBox()

BrowserBox::BrowserBox ( Mode  mode = AUTO_SIZE)

Definition at line 122 of file browserbox.cpp.

◆ ~BrowserBox()

BrowserBox::~BrowserBox ( )
overridedefault

Member Function Documentation

◆ addRow()

void BrowserBox::addRow ( std::string_view  row)

Adds a text row to the browser.

Definition at line 143 of file browserbox.cpp.

◆ addRows()

void BrowserBox::addRows ( std::string_view  rows)

Adds one or more text rows to the browser, separated by '
'.

Definition at line 131 of file browserbox.cpp.

◆ clearRows()

void BrowserBox::clearRows ( )

Remove all rows.

Definition at line 227 of file browserbox.cpp.

◆ disableLinksAndUserColors()

void BrowserBox::disableLinksAndUserColors ( )
inline

Disable links & user defined colors to be used in chat input.

Definition at line 120 of file browserbox.h.

◆ draw()

void BrowserBox::draw ( gcn::Graphics *  graphics)
override

Draws the browser box.

Definition at line 260 of file browserbox.cpp.

◆ drawFrame()

void BrowserBox::drawFrame ( gcn::Graphics *  )
inlineoverride

Overridden to avoid drawing the default frame.

Definition at line 157 of file browserbox.h.

◆ layoutTextRow()

void BrowserBox::layoutTextRow ( TextRow row,
LayoutContext context 
)
private

Layers out the given row of text starting at the given context position.

Returns
the context position for the next row.

Definition at line 337 of file browserbox.cpp.

◆ maybeRelayoutText()

void BrowserBox::maybeRelayoutText ( )
private

Definition at line 539 of file browserbox.cpp.

◆ mouseExited()

void BrowserBox::mouseExited ( gcn::MouseEvent &  event)
override

Definition at line 255 of file browserbox.cpp.

◆ mouseMoved()

void BrowserBox::mouseMoved ( gcn::MouseEvent &  event)
override

Definition at line 248 of file browserbox.cpp.

◆ mousePressed()

void BrowserBox::mousePressed ( gcn::MouseEvent &  event)
override

Handles mouse actions.

Definition at line 235 of file browserbox.cpp.

◆ relayoutText()

void BrowserBox::relayoutText ( )
private

Relayouts all text rows and returns the new height of the BrowserBox.

Definition at line 321 of file browserbox.cpp.

◆ setEnableKeys()

void BrowserBox::setEnableKeys ( bool  enable)
inline

Enable or disable the replacement of keys.

Definition at line 125 of file browserbox.h.

◆ setHighlightMode()

void BrowserBox::setHighlightMode ( unsigned int  mode)
inline

Sets the Highlight mode for links.

Definition at line 95 of file browserbox.h.

◆ setLinkHandler()

void BrowserBox::setLinkHandler ( LinkHandler handler)
inline

Sets the handler for links.

Definition at line 88 of file browserbox.h.

◆ setMaxRows()

void BrowserBox::setMaxRows ( unsigned  maxRows)
inline

Sets the maximum numbers of rows in the browser box.

0 = no limit.

Definition at line 115 of file browserbox.h.

◆ setOutlinedText()

void BrowserBox::setOutlinedText ( bool  outline)
inline

Sets whether the font will use a shadow for text.

Definition at line 110 of file browserbox.h.

◆ setPalette()

void BrowserBox::setPalette ( int  palette)
inline

Definition at line 90 of file browserbox.h.

◆ setShadowedText()

void BrowserBox::setShadowedText ( bool  shadows)
inline

Sets whether the font will use a shadow for text.

Definition at line 105 of file browserbox.h.

◆ setWrapIndent()

void BrowserBox::setWrapIndent ( int  indent)
inline

Sets the wrap indent for the browser box.

Definition at line 100 of file browserbox.h.

◆ updateHoveredLink()

void BrowserBox::updateHoveredLink ( int  x,
int  y 
)
private

Definition at line 522 of file browserbox.cpp.

Member Data Documentation

◆ mEnableKeys

bool BrowserBox::mEnableKeys = false
private

Definition at line 185 of file browserbox.h.

◆ mHighlightMode

unsigned int BrowserBox::mHighlightMode = UNDERLINE | BACKGROUND
private

Definition at line 180 of file browserbox.h.

◆ mHoveredLink

std::optional<BrowserLink> BrowserBox::mHoveredLink
private

Definition at line 186 of file browserbox.h.

◆ mLastLayoutWidth

int BrowserBox::mLastLayoutWidth = 0
private

Definition at line 188 of file browserbox.h.

◆ mLayoutTimer

Timer BrowserBox::mLayoutTimer
private

Definition at line 189 of file browserbox.h.

◆ mLinkHandler

LinkHandler* BrowserBox::mLinkHandler = nullptr
private

Definition at line 177 of file browserbox.h.

◆ mMaxRows

unsigned int BrowserBox::mMaxRows = 0
private

Definition at line 187 of file browserbox.h.

◆ mMode

Mode BrowserBox::mMode
private

Definition at line 179 of file browserbox.h.

◆ mOutline

bool BrowserBox::mOutline = false
private

Definition at line 183 of file browserbox.h.

◆ mPalette

int BrowserBox::mPalette = 0
private

Definition at line 178 of file browserbox.h.

◆ mShadows

bool BrowserBox::mShadows = false
private

Definition at line 182 of file browserbox.h.

◆ mTextRows

std::deque<TextRow> BrowserBox::mTextRows
private

Definition at line 175 of file browserbox.h.

◆ mUseLinksAndUserColors

bool BrowserBox::mUseLinksAndUserColors = true
private

Definition at line 184 of file browserbox.h.

◆ mWrapIndent

int BrowserBox::mWrapIndent = 0
private

Definition at line 181 of file browserbox.h.


The documentation for this class was generated from the following files: