Beispiel #1
0
void DefaultWebThemeEngine::paintInnerSpinButton(Canvas* canvas, State state, const Rect& rect, const InnerSpinButtonExtraParams& param) const
{
    double rectHalfHeight = rect.height / 2;

    cairo_save(canvas);
    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x + 0.5, rect.y + 1.5, rect.width, rectHalfHeight);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y, rectHalfHeight, state == StatePressed && param.spinUp);

    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5 + rectHalfHeight, rect.width, rectHalfHeight);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y + rectHalfHeight, rectHalfHeight, state == StatePressed && !param.spinUp);

    cairo_move_to(canvas, rect.x + rect.width - InnerSpinButtonArrowSize - InnerSpinButtonBorder * 2, rect.y + rectHalfHeight + rect.height / 4 - InnerSpinButtonArrowSize + 1.5);
    cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor);
    cairo_rel_line_to(canvas, MenuListArrowSize, 0);
    cairo_rel_line_to(canvas, -MenuListArrowSize / 2, MenuListArrowSize);
    cairo_close_path(canvas);

    cairo_move_to(canvas, rect.x + rect.width - InnerSpinButtonArrowSize - InnerSpinButtonBorder * 2, rect.y + rect.height / 4 + InnerSpinButtonArrowSize);
    cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor);
    cairo_rel_line_to(canvas, MenuListArrowSize, 0);
    cairo_rel_line_to(canvas, -MenuListArrowSize / 2, -MenuListArrowSize);
    cairo_close_path(canvas);

    cairo_fill(canvas);
}
void DefaultWebThemeEngine::paintInnerSpinButton(WebCanvas* canvas, State state, const WebRect& rect, const InnerSpinButtonExtraParams& param) const
{
    double rectHalfHeight = rect.height / 2;

    cairo_save(canvas);
    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x + 0.5, rect.y + 1.5, rect.width, rectHalfHeight);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y, rectHalfHeight, state == StatePressed && param.spinUp);

    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5 + rectHalfHeight, rect.width, rectHalfHeight);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y + rectHalfHeight, rectHalfHeight, state == StatePressed && !param.spinUp);

    cairo_move_to(canvas, rect.x + rect.width - INNERSPINBUTTON_ARROW_SIZE - INNERSPINBUTTON_BORDER * 2, rect.y + rectHalfHeight + rect.height/4 - INNERSPINBUTTON_ARROW_SIZE + 1.5);
    cairo_set_source_rgb(canvas, CHECK_COLOR, CHECK_COLOR, CHECK_COLOR);
    cairo_rel_line_to(canvas, MENULIST_ARROW_SIZE, 0);
    cairo_rel_line_to(canvas, -MENULIST_ARROW_SIZE / 2, MENULIST_ARROW_SIZE);
    cairo_close_path(canvas);

    cairo_move_to(canvas, rect.x + rect.width - INNERSPINBUTTON_ARROW_SIZE - INNERSPINBUTTON_BORDER * 2, rect.y + rect.height/4 + INNERSPINBUTTON_ARROW_SIZE);
    cairo_set_source_rgb(canvas, CHECK_COLOR, CHECK_COLOR, CHECK_COLOR);
    cairo_rel_line_to(canvas, MENULIST_ARROW_SIZE, 0);
    cairo_rel_line_to(canvas, -MENULIST_ARROW_SIZE / 2, -MENULIST_ARROW_SIZE);
    cairo_close_path(canvas);

    cairo_fill(canvas);

    cairo_restore(canvas);
}
Beispiel #3
0
void DefaultWebThemeEngine::paintSliderThumb(Canvas* canvas, State state, const Rect& rect) const
{
    cairo_save(canvas);
    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x, rect.y, rect.width, rect.height);
    cairo_stroke_preserve(canvas);
    gradientFill(canvas, rect.y, rect.height, state == StatePressed);
    cairo_restore(canvas);
}
Beispiel #4
0
void DefaultWebThemeEngine::paintButton(Canvas* canvas, State state, const Rect& rect, const ButtonExtraParams&) const
{
    cairo_save(canvas);
    setupBorder(canvas, state);
    // Cairo uses a coordinate system not based on pixel coordinates, so
    // we need to add  0.5 to x and y coord or the line will stay between
    // two pixels instead of in the middle of a pixel.
    cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y, rect.height, state == StatePressed);
    cairo_restore(canvas);
}
Beispiel #5
0
void DefaultWebThemeEngine::paintMeter(Canvas* canvas, State state, const Rect& rect, const MeterExtraParams& params) const
{
    cairo_save(canvas);

    // Background
    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x, rect.y, rect.width, rect.height);
    cairo_fill(canvas);
    // Meter
    cairo_rectangle(canvas, rect.x, rect.y, rect.width * params.valueRatio(), rect.height);
    gradientFill(canvas, rect.y, rect.height);

    cairo_restore(canvas);
}
Beispiel #6
0
void DefaultWebThemeEngine::paintRadio(Canvas* canvas, State state, const Rect& rect, const ButtonExtraParams& param) const
{
    cairo_save(canvas);
    setupBorder(canvas, state);
    cairo_arc(canvas, rect.x + rect.width / 2.0, rect.y + rect.height / 2.0, rect.width / 2.0, 0, 2 * M_PI);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y, rect.height);

    if (param.checked) {
        cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor);
        cairo_arc(canvas, rect.x + rect.width / 2.0, rect.y + rect.height / 2.0, rect.width / 4.0, 0, 2 * M_PI);
        cairo_fill(canvas);
    }
    cairo_restore(canvas);
}
Beispiel #7
0
void DefaultWebThemeEngine::paintMenuList(Canvas* canvas, State state, const Rect& rect) const
{
    cairo_save(canvas);
    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y, rect.height, state == StatePressed);

    cairo_move_to(canvas, rect.x + rect.width - MenuListArrowSize - MenuListBorder, rect.y + 1 + rect.height / 2 - MenuListArrowSize / 2);
    cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor);
    cairo_rel_line_to(canvas, MenuListArrowSize, 0);
    cairo_rel_line_to(canvas, -MenuListArrowSize / 2, MenuListArrowSize);
    cairo_close_path(canvas);
    cairo_fill(canvas);

    cairo_restore(canvas);
}
void DefaultWebThemeEngine::paintMenuList(WebCanvas* canvas, State state, const WebRect& rect) const
{
    cairo_save(canvas);
    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y, rect.height, state == StatePressed);

    cairo_move_to(canvas, rect.x + rect.width - MENULIST_ARROW_SIZE - MENULIST_BORDER, rect.y + 1 + rect.height/2 - MENULIST_ARROW_SIZE/2);
    cairo_set_source_rgb(canvas, CHECK_COLOR, CHECK_COLOR, CHECK_COLOR);
    cairo_rel_line_to(canvas, MENULIST_ARROW_SIZE, 0);
    cairo_rel_line_to(canvas, -MENULIST_ARROW_SIZE/2, MENULIST_ARROW_SIZE);
    cairo_close_path(canvas);
    cairo_fill(canvas);

    cairo_restore(canvas);
}
Beispiel #9
0
void DefaultWebThemeEngine::paintProgressBar(Canvas* canvas, State state, const Rect& rect, const ProgressBarExtraParams& params) const
{
    cairo_save(canvas);

    if (params.isDeterminate) {
        // Background
        setupBorder(canvas, state);
        cairo_rectangle(canvas, rect.x, rect.y, rect.width, rect.height);
        cairo_fill(canvas);
        // Progress
        cairo_rectangle(canvas, rect.x, rect.y, rect.width * params.position, rect.height);
        gradientFill(canvas, rect.y, rect.height);
    } else {
        cairo_rectangle(canvas, rect.x, rect.y, rect.width, rect.height);
        gradientFill(canvas, rect.y, rect.height, true);
    }

    cairo_restore(canvas);
}
Beispiel #10
0
void DefaultWebThemeEngine::paintCheckbox(Canvas* canvas, State state, const Rect& rect, const ButtonExtraParams& param) const
{
    cairo_save(canvas);
    setupBorder(canvas, state);
    cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height);
    cairo_stroke_preserve(canvas);

    gradientFill(canvas, rect.y, rect.height, state == StatePressed);

    if (param.checked) {
        const double border = 3;
        cairo_set_line_width(canvas, 2);
        cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor);
        cairo_move_to(canvas, rect.x + 0.5 + border, rect.y + 0.5 + rect.height - border);
        cairo_rel_line_to(canvas, rect.width - border * 2, -rect.height + border * 2);
        cairo_move_to(canvas, rect.x + 0.5 + border, rect.y + 0.5 + border);
        cairo_rel_line_to(canvas, rect.width - border * 2, rect.height - border * 2);
        cairo_stroke(canvas);
    }

    cairo_restore(canvas);
}