diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-03-20 04:24:26 +0100 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-03-20 04:24:26 +0100 |
| commit | 7f2517160f6154a2fb650c50f7de311d68d2dc7d (patch) | |
| tree | 4bd616c8878bcaf21256252fa254572fa1fc4c5d /dash | |
| parent | 120f4fa0185db4f5339f8a01773013f077d3d307 (diff) | |
ResultRendererTile: use cairo device scaling for scaling elements
(bzr r3725.6.1)
Diffstat (limited to 'dash')
| -rw-r--r-- | dash/ResultRendererHorizontalTile.cpp | 45 | ||||
| -rw-r--r-- | dash/ResultRendererTile.cpp | 31 |
2 files changed, 38 insertions, 38 deletions
diff --git a/dash/ResultRendererHorizontalTile.cpp b/dash/ResultRendererHorizontalTile.cpp index 12068f929..77f6a8624 100644 --- a/dash/ResultRendererHorizontalTile.cpp +++ b/dash/ResultRendererHorizontalTile.cpp @@ -37,14 +37,14 @@ namespace unity { namespace { -RawPixel const CARD_VIEW_PADDING = 4_em; -RawPixel const CARD_VIEW_ICON_SIZE = 64_em; -RawPixel const CARD_VIEW_ICON_TEXT_GAP = 10_em; -RawPixel const CARD_VIEW_WIDTH = 277_em; -RawPixel const CARD_VIEW_HEIGHT = 74_em; -RawPixel const CARD_VIEW_HIGHLIGHT_CORNER_RADIUS = 2_em; -RawPixel const CARD_VIEW_ICON_OUTLINE_WIDTH = 1_em; -RawPixel const CARD_VIEW_TEXT_LINE_SPACING = 0_em; +const RawPixel CARD_VIEW_PADDING = 4_em; +const RawPixel CARD_VIEW_ICON_SIZE = 64_em; +const RawPixel CARD_VIEW_ICON_TEXT_GAP = 10_em; +const RawPixel CARD_VIEW_WIDTH = 277_em; +const RawPixel CARD_VIEW_HEIGHT = 74_em; +const RawPixel CARD_VIEW_ICON_OUTLINE_WIDTH = 1_em; +const int CARD_VIEW_HIGHLIGHT_CORNER_RADIUS = 2; +const int CARD_VIEW_TEXT_LINE_SPACING = 0; void RenderTexture(nux::GraphicsEngine& GfxContext, int x, @@ -234,6 +234,7 @@ nux::BaseTexture* ResultRendererHorizontalTile::DrawHighlight(std::string const& int width, int height) { nux::CairoGraphics cairo_graphics(CAIRO_FORMAT_ARGB32, width, height); + cairo_surface_set_device_scale(cairo_graphics.GetSurface(), scale_, scale_); cairo_t* cr = cairo_graphics.GetInternalContext(); cairo_scale(cr, 1.0f, 1.0f); @@ -249,7 +250,7 @@ nux::BaseTexture* ResultRendererHorizontalTile::DrawHighlight(std::string const& 1.0f, 0.0f, 0.0f, - CARD_VIEW_HIGHLIGHT_CORNER_RADIUS.CP(scale_), + CARD_VIEW_HIGHLIGHT_CORNER_RADIUS, width, height, false); @@ -262,6 +263,7 @@ nux::BaseTexture* ResultRendererHorizontalTile::DrawNormal(std::string const& te int width, int height) { nux::CairoGraphics cairo_graphics(CAIRO_FORMAT_ARGB32, width, height); + cairo_surface_set_device_scale(cairo_graphics.GetSurface(), scale_, scale_); cairo_t* cr = cairo_graphics.GetInternalContext(); cairo_scale(cr, 1.0f, 1.0f); @@ -277,9 +279,9 @@ nux::BaseTexture* ResultRendererHorizontalTile::DrawNormal(std::string const& te 1.0f, 0.0f, 0.0f, - CARD_VIEW_HIGHLIGHT_CORNER_RADIUS.CP(scale_), - width, - height, + CARD_VIEW_HIGHLIGHT_CORNER_RADIUS, + width/scale_, + height/scale_, false); cairo_fill(cr); @@ -308,8 +310,9 @@ void ResultRendererHorizontalTile::LoadText(Result const& row) CARD_VIEW_ICON_TEXT_GAP.CP(scale_), CARD_VIEW_HEIGHT.CP(scale_) - 2 * CARD_VIEW_PADDING.CP(scale_)); + cairo_surface_set_device_scale(_cairoGraphics.GetSurface(), scale_, scale_); - cairo_t* cr = _cairoGraphics.GetContext(); + cairo_t* cr = _cairoGraphics.GetInternalContext(); PangoLayout* layout = NULL; PangoFontDescription* desc = NULL; @@ -328,12 +331,12 @@ void ResultRendererHorizontalTile::LoadText(Result const& row) pango_layout_set_wrap(layout, PANGO_WRAP_WORD_CHAR); pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_END); - pango_layout_set_spacing(layout, CARD_VIEW_TEXT_LINE_SPACING.CP(scale_) * PANGO_SCALE); - pango_layout_set_width(layout, (CARD_VIEW_WIDTH.CP(scale_) - - CARD_VIEW_ICON_SIZE.CP(scale_) - - 2 * CARD_VIEW_ICON_OUTLINE_WIDTH.CP(scale_) - - 2 * CARD_VIEW_PADDING.CP(scale_) - - CARD_VIEW_ICON_TEXT_GAP.CP(scale_)) * PANGO_SCALE); + pango_layout_set_spacing(layout, CARD_VIEW_TEXT_LINE_SPACING * PANGO_SCALE); + pango_layout_set_width(layout, (CARD_VIEW_WIDTH - + CARD_VIEW_ICON_SIZE - + 2 * CARD_VIEW_ICON_OUTLINE_WIDTH - + 2 * CARD_VIEW_PADDING - + CARD_VIEW_ICON_TEXT_GAP) * PANGO_SCALE); pango_layout_set_height(layout, -4); @@ -356,7 +359,7 @@ void ResultRendererHorizontalTile::LoadText(Result const& row) PangoRectangle logRect = {0, 0, 0, 0}; pango_layout_get_extents(layout, NULL, &logRect); if (pango_layout_get_line_count(layout) < 4) - offset = ((CARD_VIEW_HEIGHT.CP(scale_) - 2 * CARD_VIEW_PADDING.CP(scale_)) - (logRect.height / PANGO_SCALE)) / 2.0; + offset = ((CARD_VIEW_HEIGHT - 2 * CARD_VIEW_PADDING) - (logRect.height / PANGO_SCALE)) / 2.0; cairo_move_to(cr, 0.0f, offset); pango_cairo_show_layout(cr, layout); @@ -364,8 +367,6 @@ void ResultRendererHorizontalTile::LoadText(Result const& row) pango_font_description_free(desc); g_object_unref(layout); - cairo_destroy(cr); - TextureContainer *container = row.renderer<TextureContainer*>(); if (container) container->text = texture_ptr_from_cairo_graphics(_cairoGraphics); diff --git a/dash/ResultRendererTile.cpp b/dash/ResultRendererTile.cpp index 5075565df..b6181edcf 100644 --- a/dash/ResultRendererTile.cpp +++ b/dash/ResultRendererTile.cpp @@ -39,12 +39,11 @@ DECLARE_LOGGER(logger, "unity.dash.results"); namespace { - -std::string const DEFAULT_GICON = ". GThemedIcon text-x-preview"; -RawPixel const PADDING = 6_em; -RawPixel const SPACING = 10_em; -RawPixel const FONT_SIZE = 10_em; -int const FONT_MULTIPLIER = 1024; +const std::string DEFAULT_GICON = ". GThemedIcon text-x-preview"; +const RawPixel PADDING = 6_em; +const RawPixel SPACING = 10_em; +const int FONT_SIZE = 10; +const int FONT_MULTIPLIER = 1024; char const REPLACEMENT_CHAR = '?'; float const CORNER_HIGHTLIGHT_RADIUS = 2.0f; @@ -198,6 +197,7 @@ void ResultRendererTile::Render(nux::GraphicsEngine& GfxContext, nux::BaseTexture* ResultRendererTile::DrawHighlight(std::string const& texid, int width, int height) { nux::CairoGraphics cairo_graphics(CAIRO_FORMAT_ARGB32, width, height); + cairo_surface_set_device_scale(cairo_graphics.GetSurface(), scale_, scale_); cairo_t* cr = cairo_graphics.GetInternalContext(); cairo_scale(cr, 1.0f, 1.0f); @@ -214,8 +214,8 @@ nux::BaseTexture* ResultRendererTile::DrawHighlight(std::string const& texid, in 0.0f, 0.0f, CORNER_HIGHTLIGHT_RADIUS, - width, - height, + width/scale_, + height/scale_, false); cairo_fill(cr); @@ -282,9 +282,8 @@ void ResultRendererTile::LoadIcon(Result const& row) RawPixel const tile_highlight_width = style.GetTileIconHightlightWidth(); RawPixel const tile_highlight_height = style.GetTileIconHightlightHeight(); - std::string icon_hint(row.icon_hint); - std::string icon_name; - icon_name = !icon_hint.empty() ? icon_hint : DEFAULT_GICON; + std::string const& icon_hint = row.icon_hint; + std::string const& icon_name = !icon_hint.empty() ? icon_hint : DEFAULT_GICON; glib::Object<GIcon> icon(g_icon_new_for_string(icon_name.c_str(), NULL)); TextureContainer* container = row.renderer<TextureContainer*>(); @@ -292,7 +291,6 @@ void ResultRendererTile::LoadIcon(Result const& row) if (container) { TextureCache& cache = TextureCache::GetDefault(); - BaseTexturePtr texture_prelight(cache.FindTexture("resultview_prelight", tile_highlight_width.CP(scale_), tile_highlight_height.CP(scale_), @@ -370,6 +368,7 @@ nux::BaseTexture* ResultRendererTile::CreateTextureCallback(std::string const& t } nux::CairoGraphics cairo_graphics(CAIRO_FORMAT_ARGB32, pixbuf_width, pixbuf_height); + cairo_surface_set_device_scale(cairo_graphics.GetSurface(), scale_, scale_); cairo_t* cr = cairo_graphics.GetInternalContext(); cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR); @@ -482,8 +481,9 @@ void ResultRendererTile::LoadText(Result const& row) nux::CairoGraphics _cairoGraphics(CAIRO_FORMAT_ARGB32, tile_width.CP(scale_) - (PADDING.CP(scale_) * 2), tile_height.CP(scale_) - tile_size.CP(scale_) - SPACING.CP(scale_)); + cairo_surface_set_device_scale(_cairoGraphics.GetSurface(), scale_, scale_); - cairo_t* cr = _cairoGraphics.GetContext(); + cairo_t* cr = _cairoGraphics.GetInternalContext(); PangoLayout* layout = NULL; PangoFontDescription* desc = NULL; @@ -498,14 +498,14 @@ void ResultRendererTile::LoadText(Result const& row) cairo_set_font_options(cr, gdk_screen_get_font_options(screen)); layout = pango_cairo_create_layout(cr); desc = pango_font_description_from_string(font.Value()); - pango_font_description_set_size (desc, FONT_SIZE.CP(scale_) * FONT_MULTIPLIER); + pango_font_description_set_size (desc, FONT_SIZE * FONT_MULTIPLIER); pango_layout_set_font_description(layout, desc); pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER); pango_layout_set_wrap(layout, PANGO_WRAP_WORD_CHAR); pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_START); - pango_layout_set_width(layout, (tile_width.CP(scale_) - (PADDING.CP(scale_) * 2))* PANGO_SCALE); + pango_layout_set_width(layout, (tile_width - (PADDING * 2))* PANGO_SCALE); pango_layout_set_height(layout, -2); // FIXME bug #1239381 @@ -536,7 +536,6 @@ void ResultRendererTile::LoadText(Result const& row) // clean up pango_font_description_free(desc); g_object_unref(layout); - cairo_destroy(cr); TextureContainer *container = row.renderer<TextureContainer*>(); if (container) |
