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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }