dw::core::style Namespace Reference

Anything related to Dillo Widget styles is defined here. More...


Classes

class  Box
 Represents a dimension box according to the CSS box model. More...
class  StyleAttrs
class  Style
class  TooltipAttrs
class  Tooltip
class  FontAttrs
class  Font
class  ColorAttrs
class  Color

Typedefs

typedef int Length
 Type for representing all lengths within dw::core::style.

Enumerations

enum  Cursor {
  CURSOR_CROSSHAIR, CURSOR_DEFAULT, CURSOR_POINTER, CURSOR_MOVE,
  CURSOR_E_RESIZE, CURSOR_NE_RESIZE, CURSOR_NW_RESIZE, CURSOR_N_RESIZE,
  CURSOR_SE_RESIZE, CURSOR_SW_RESIZE, CURSOR_S_RESIZE, CURSOR_W_RESIZE,
  CURSOR_TEXT, CURSOR_WAIT, CURSOR_HELP
}
enum  BorderCollapse { BORDER_MODEL_SEPARATE, BORDER_MODEL_COLLAPSE }
enum  BorderStyle {
  BORDER_NONE, BORDER_HIDDEN, BORDER_DOTTED, BORDER_DASHED,
  BORDER_SOLID, BORDER_DOUBLE, BORDER_GROOVE, BORDER_RIDGE,
  BORDER_INSET, BORDER_OUTSET
}
enum  TextAlignType {
  TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER, TEXT_ALIGN_JUSTIFY,
  TEXT_ALIGN_STRING
}
enum  VAlignType {
  VALIGN_TOP, VALIGN_BOTTOM, VALIGN_MIDDLE, VALIGN_BASELINE,
  VALIGN_SUB, VALIGN_SUPER, VALIGN_TEXT_TOP, VALIGN_TEXT_BOTTOM
}
enum  DisplayType {
  DISPLAY_BLOCK, DISPLAY_INLINE, DISPLAY_LIST_ITEM, DISPLAY_NONE,
  DISPLAY_TABLE, DISPLAY_TABLE_ROW_GROUP, DISPLAY_TABLE_HEADER_GROUP, DISPLAY_TABLE_FOOTER_GROUP,
  DISPLAY_TABLE_ROW, DISPLAY_TABLE_CELL
}
enum  LineType { LINE_NORMAL, LINE_DOTTED, LINE_DASHED }
enum  ListStylePosition { LIST_STYLE_POSITION_INSIDE, LIST_STYLE_POSITION_OUTSIDE }
enum  ListStyleType {
  LIST_STYLE_TYPE_DISC, LIST_STYLE_TYPE_CIRCLE, LIST_STYLE_TYPE_SQUARE, LIST_STYLE_TYPE_DECIMAL,
  LIST_STYLE_TYPE_DECIMAL_LEADING_ZERO, LIST_STYLE_TYPE_LOWER_ROMAN, LIST_STYLE_TYPE_UPPER_ROMAN, LIST_STYLE_TYPE_LOWER_GREEK,
  LIST_STYLE_TYPE_LOWER_ALPHA, LIST_STYLE_TYPE_LOWER_LATIN, LIST_STYLE_TYPE_UPPER_ALPHA, LIST_STYLE_TYPE_UPPER_LATIN,
  LIST_STYLE_TYPE_HEBREW, LIST_STYLE_TYPE_ARMENIAN, LIST_STYLE_TYPE_GEORGIAN, LIST_STYLE_TYPE_CJK_IDEOGRAPHIC,
  LIST_STYLE_TYPE_HIRAGANA, LIST_STYLE_TYPE_KATAKANA, LIST_STYLE_TYPE_HIRAGANA_IROHA, LIST_STYLE_TYPE_KATAKANA_IROHA,
  LIST_STYLE_TYPE_NONE
}
enum  FontStyle { FONT_STYLE_NORMAL, FONT_STYLE_ITALIC, FONT_STYLE_OBLIQUE }
enum  FontVariant { FONT_VARIANT_NORMAL, FONT_VARIANT_SMALL_CAPS }
enum  TextDecoration {
  TEXT_DECORATION_NONE = 0, TEXT_DECORATION_UNDERLINE = 1 << 0, TEXT_DECORATION_OVERLINE = 1 << 1, TEXT_DECORATION_LINE_THROUGH = 1 << 2,
  TEXT_DECORATION_BLINK = 1 << 3
}
enum  WhiteSpace {
  WHITE_SPACE_NORMAL, WHITE_SPACE_PRE, WHITE_SPACE_NOWRAP, WHITE_SPACE_PRE_WRAP,
  WHITE_SPACE_PRE_LINE
}
enum  { LENGTH_AUTO = 0 }

Functions

static void drawBorderTop (View *view, Style *style, int x1, int y1, int x2, int y2)
static void drawBorderBottom (View *view, Style *style, int x1, int y1, int x2, int y2)
static void drawBorderLeft (View *view, Style *style, int x1, int y1, int x2, int y2)
static void drawBorderRight (View *view, Style *style, int x1, int y1, int x2, int y2)
void drawBorder (View *view, Rectangle *area, int x, int y, int width, int height, Style *style, bool inverse)
 Draw the border of a region in window, according to style.
void drawBackground (View *view, Rectangle *area, int x, int y, int width, int height, Style *style, bool inverse)
 Draw the background (content plus padding) of a region in window, according to style.
static void strtolower (char *s)
void numtostr (int num, char *buf, int buflen, ListStyleType listStyleType)
 Convert a number into a string, in a given list style.
Length createAbsLength (int n)
 Returns a length of n pixels.
Length createPerLength (double v)
 Returns a percentage, v is relative to 1, not to 100.
Length createRelLength (double v)
 Returns a relative length.
bool isAbsLength (Length l)
 Returns true if l is an absolute length.
bool isPerLength (Length l)
 Returns true if l is a percentage.
bool isRelLength (Length l)
 Returns true if l is a relative length.
int absLengthVal (Length l)
 Returns the value of a length in pixels, as an integer.
double perLengthVal (Length l)
 Returns the value of a percentage, relative to 1, as a double.
double relLengthVal (Length l)
 Returns the value of a relative length, as a float.

Variables

static const char *const roman_I0 [] = { "","I","II","III","IV","V","VI","VII","VIII","IX" }
static const char *const *const roman_I1 [] = { "","X","XX","XXX","XL","L","LX","LXX","LXXX","XC" }
static const char *const
*const *const 
roman_I2 [] = { "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM" }
static const char *const
*const *const *const 
roman_I3 [] = { "","M","MM","MMM","MMMM" }


Detailed Description

Anything related to Dillo Widget styles is defined here.

Overview

dw::core::style::Style provides some resources and attributes for drawing widgets, as well as for parts of a widget (e.g., dw::Textblock uses styles for its words). Creating a style is done by filling a dw::core::style::StyleAttrs with the attributes and calling dw::core::style::Style::create:

 dw::core::style::Style styleAttrs;
 dw::core::style::Style *style;
 dw::core::Layout *layout;

 // ...

 styleAttrs.foo = bar;
 // etc.
 style = dw::core::style::Style::create (&styleAttrs, layout);
 // do something with style

After this, the attributes of a dw::core::style::Style should not be changed anymore, since styles are often shared between different widgets etc. (see below). Most times, you simply copy the attributes of another style (possible, since dw::core::style::Style is a sub class of dw::core::style::StyleAttrs), modify them and create a new style:

 styleAttrs = *anotherStyle;
 styleAttrs.foo = baz;
 style = dw::core::style::Style::create (&styleAttrs, layout);

The dw::core::style::Font structure can be created by dw::core::style::Font::create, in a similar, with dw::core::style::FontAttrs, and colors by dw::core::style::Color::create, passing 0xrrggbb as an argument. Furthermore, there is dw::core::style::Tooltip, created by dw::core::style::Tooltip::create.

Notice that fonts, colors and tooltips are only intended to be used in conjunction with dw::core::style::Style.

Naming

dw::core::style::Style will become important for CSS, each CSS attribute, which is supported by dillo, will refer to an attribute in dw::core::style::Style. For this reason, the attributes in dw::core::style::Style get the names from the CSS attributes, with "camelCase" instead of hyphens (e.g. "background-color" becomes "backgroundColor").

However, dw::core::style::Style will be extended by some more attributes, which are not defined by CSS. To distinguish them, they get the prefix "x_", e.g. dw::core::style::Style::x_link.

Lengths and Percentages

dw::core::style::Length is a simple data type for lengths and percentages:

Since many values in CSS may be either lengths or percentages, a single type is very useful.

Useful Functions

Creating lengths:

Examine lengths:

Boxes

The CSS Box Model

For borders, margins etc., the box model defined by CSS2 is used. dw::core::style::Style contains some members defining these attributes. A dw::core::Widget must use these values for any calculation of sizes. There are some helper functions (see dw/style.hh). A dw::core::style::Style box looks quite similar to a CSS box:

dw-style-box-model.png

Background colors

The background color is stored in dw::core::style::Style::backgroundColor, which may be NULL (the background color of the parent widget is shining through).

For toplevel widgets, this color is set as the background color of the views (dw::core::View::setBgColor), for other widgets, a filled rectangle is drawn, covering the content and padding. (This is compliant with CSS2, the background color of the toplevel element covers the whole canvas.)

Drawing

The following methods may be useful:

Notes on Memory Management

Memory management is done by reference counting, dw::core::style::Style::create returns a pointer to dw::core::style::Style with an increased reference counter, so you should care about calling dw::core::style::Style::unref if it is not used anymore. You do not need to care about the reference counters of fonts and styles.

In detail:


Typedef Documentation

Type for representing all lengths within dw::core::style.

Lengths are int's. Absolute lengths are represented in the following way:

dw-style-length-absolute.png

Percentages:

dw-style-length-percentage.png

Relative lengths (only used in HTML):

dw-style-length-relative.png

This is an implementation detail, use one of the following functions:

Creating lengths:

Examine lengths:

"auto" lengths are represented as dw::core::style::LENGTH_AUTO.


Enumeration Type Documentation

anonymous enum

Enumerator:
LENGTH_AUTO  Represents "auto" lengths.

Enumerator:
BORDER_MODEL_SEPARATE 
BORDER_MODEL_COLLAPSE 

Enumerator:
BORDER_NONE 
BORDER_HIDDEN 
BORDER_DOTTED 
BORDER_DASHED 
BORDER_SOLID 
BORDER_DOUBLE 
BORDER_GROOVE 
BORDER_RIDGE 
BORDER_INSET 
BORDER_OUTSET 

Enumerator:
CURSOR_CROSSHAIR 
CURSOR_DEFAULT 
CURSOR_POINTER 
CURSOR_MOVE 
CURSOR_E_RESIZE 
CURSOR_NE_RESIZE 
CURSOR_NW_RESIZE 
CURSOR_N_RESIZE 
CURSOR_SE_RESIZE 
CURSOR_SW_RESIZE 
CURSOR_S_RESIZE 
CURSOR_W_RESIZE 
CURSOR_TEXT 
CURSOR_WAIT 
CURSOR_HELP 

Todo:
Incomplete. Has to be completed for a CSS implementation.
Enumerator:
DISPLAY_BLOCK 
DISPLAY_INLINE 
DISPLAY_LIST_ITEM 
DISPLAY_NONE 
DISPLAY_TABLE 
DISPLAY_TABLE_ROW_GROUP 
DISPLAY_TABLE_HEADER_GROUP 
DISPLAY_TABLE_FOOTER_GROUP 
DISPLAY_TABLE_ROW 
DISPLAY_TABLE_CELL 

Enumerator:
FONT_STYLE_NORMAL 
FONT_STYLE_ITALIC 
FONT_STYLE_OBLIQUE 

Enumerator:
FONT_VARIANT_NORMAL 
FONT_VARIANT_SMALL_CAPS 

Enumerator:
LINE_NORMAL 
LINE_DOTTED 
LINE_DASHED 

Enumerator:
LIST_STYLE_POSITION_INSIDE 
LIST_STYLE_POSITION_OUTSIDE 

Enumerator:
LIST_STYLE_TYPE_DISC 
LIST_STYLE_TYPE_CIRCLE 
LIST_STYLE_TYPE_SQUARE 
LIST_STYLE_TYPE_DECIMAL 
LIST_STYLE_TYPE_DECIMAL_LEADING_ZERO 
LIST_STYLE_TYPE_LOWER_ROMAN 
LIST_STYLE_TYPE_UPPER_ROMAN 
LIST_STYLE_TYPE_LOWER_GREEK 
LIST_STYLE_TYPE_LOWER_ALPHA 
LIST_STYLE_TYPE_LOWER_LATIN 
LIST_STYLE_TYPE_UPPER_ALPHA 
LIST_STYLE_TYPE_UPPER_LATIN 
LIST_STYLE_TYPE_HEBREW 
LIST_STYLE_TYPE_ARMENIAN 
LIST_STYLE_TYPE_GEORGIAN 
LIST_STYLE_TYPE_CJK_IDEOGRAPHIC 
LIST_STYLE_TYPE_HIRAGANA 
LIST_STYLE_TYPE_KATAKANA 
LIST_STYLE_TYPE_HIRAGANA_IROHA 
LIST_STYLE_TYPE_KATAKANA_IROHA 
LIST_STYLE_TYPE_NONE 

Enumerator:
TEXT_ALIGN_LEFT 
TEXT_ALIGN_RIGHT 
TEXT_ALIGN_CENTER 
TEXT_ALIGN_JUSTIFY 
TEXT_ALIGN_STRING 

Enumerator:
TEXT_DECORATION_NONE 
TEXT_DECORATION_UNDERLINE 
TEXT_DECORATION_OVERLINE 
TEXT_DECORATION_LINE_THROUGH 
TEXT_DECORATION_BLINK 

Enumerator:
VALIGN_TOP 
VALIGN_BOTTOM 
VALIGN_MIDDLE 
VALIGN_BASELINE 
VALIGN_SUB 
VALIGN_SUPER 
VALIGN_TEXT_TOP 
VALIGN_TEXT_BOTTOM 

Enumerator:
WHITE_SPACE_NORMAL 
WHITE_SPACE_PRE 
WHITE_SPACE_NOWRAP 
WHITE_SPACE_PRE_WRAP 
WHITE_SPACE_PRE_LINE 


Function Documentation

int dw::core::style::absLengthVal ( Length  l  )  [inline]

Length dw::core::style::createAbsLength ( int  n  )  [inline]

Returns a length of n pixels.

Length dw::core::style::createPerLength ( double  v  )  [inline]

Returns a percentage, v is relative to 1, not to 100.

Length dw::core::style::createRelLength ( double  v  )  [inline]

Returns a relative length.

void dw::core::style::drawBackground ( View *  view,
Rectangle *  area,
int  x,
int  y,
int  width,
int  height,
Style *  style,
bool  inverse 
)

void dw::core::style::drawBorder ( View *  view,
Rectangle *  area,
int  x,
int  y,
int  width,
int  height,
Style *  style,
bool  inverse 
)

static void dw::core::style::drawBorderBottom ( View *  view,
Style *  style,
int  x1,
int  y1,
int  x2,
int  y2 
) [static]

static void dw::core::style::drawBorderLeft ( View *  view,
Style *  style,
int  x1,
int  y1,
int  x2,
int  y2 
) [static]

static void dw::core::style::drawBorderRight ( View *  view,
Style *  style,
int  x1,
int  y1,
int  x2,
int  y2 
) [static]

static void dw::core::style::drawBorderTop ( View *  view,
Style *  style,
int  x1,
int  y1,
int  x2,
int  y2 
) [static]

bool dw::core::style::isAbsLength ( Length  l  )  [inline]

bool dw::core::style::isPerLength ( Length  l  )  [inline]

bool dw::core::style::isRelLength ( Length  l  )  [inline]

Returns true if l is a relative length.

void dw::core::style::numtostr ( int  num,
char *  buf,
int  buflen,
ListStyleType  listStyleType 
)

double dw::core::style::perLengthVal ( Length  l  )  [inline]

double dw::core::style::relLengthVal ( Length  l  )  [inline]

Returns the value of a relative length, as a float.

static void dw::core::style::strtolower ( char *  s  )  [static]

Referenced by numtostr().


Variable Documentation

const char* const dw::core::style::roman_I0[] = { "","I","II","III","IV","V","VI","VII","VIII","IX" } [static]

Referenced by numtostr().

const char* const * const dw::core::style::roman_I1[] = { "","X","XX","XXX","XL","L","LX","LXX","LXXX","XC" } [static]

Referenced by numtostr().

const char* const * const * const dw::core::style::roman_I2[] = { "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM" } [static]

Referenced by numtostr().

const char* const * const * const * const dw::core::style::roman_I3[] = { "","M","MM","MMM","MMMM" } [static]

Referenced by numtostr().


Generated on Wed Sep 7 02:00:37 2011 for Dillo by  doxygen 1.5.9