~unity-team/unity/unity.coverflow

« back to all changes in this revision

Viewing changes to plugins/unityshell/src/DashStyle.cpp

  • Committer: Jason Smith
  • Date: 2012-02-24 17:45:12 UTC
  • mfrom: (1897.2.116 unity)
  • Revision ID: jason.smith@canonical.com-20120224174512-cvq25r7tupuzo4mj
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
110
110
 
111
111
  void SetDefaultValues();
112
112
 
113
 
  void Star(cairo_t* cr, double size);
114
 
 
115
113
  void GetTextExtents(int& width,
116
114
                      int& height,
117
115
                      int  maxWidth,
218
216
  LazyLoadTexture group_grid_texture_;
219
217
  LazyLoadTexture group_coverflow_texture_;
220
218
 
 
219
  LazyLoadTexture star_deselected_texture_;
 
220
  LazyLoadTexture star_selected_texture_;
 
221
  LazyLoadTexture star_highlight_texture_;
221
222
};
222
223
 
223
224
Style::Impl::Impl(Style* owner)
252
253
  , group_expand_texture_("/dash_group_expand.png")
253
254
  , group_grid_texture_("/grid-view.svg")
254
255
  , group_coverflow_texture_ ("/flow-view.svg")
 
256
  , star_deselected_texture_("/star_deselected.png")
 
257
  , star_selected_texture_("/star_selected.png")
 
258
  , star_highlight_texture_("/star_highlight.png")
255
259
{
256
260
  signal_manager_.Add(new glib::Signal<void, GtkSettings*, GParamSpec*>
257
261
                      (gtk_settings_get_default(),
674
678
  cairo_surface_mark_dirty(surface);
675
679
}
676
680
 
677
 
void Style::Impl::Star(cairo_t* cr, double size)
678
 
{
679
 
  double outter[5][2] = {{0.0, 0.0},
680
 
                         {0.0, 0.0},
681
 
                         {0.0, 0.0},
682
 
                         {0.0, 0.0},
683
 
                         {0.0, 0.0}};
684
 
  double inner[5][2]  = {{0.0, 0.0},
685
 
                         {0.0, 0.0},
686
 
                         {0.0, 0.0},
687
 
                         {0.0, 0.0},
688
 
                         {0.0, 0.0}};
689
 
  double angle[5]     = {-90.0, -18.0, 54.0, 126.0, 198.0};
690
 
  double outterRadius = size;
691
 
  double innerRadius  = size/1.75;
692
 
 
693
 
  for (int i = 0; i < 5; i++)
694
 
  {
695
 
    outter[i][0] = outterRadius * cos(angle[i] * M_PI / 180.0);
696
 
    outter[i][1] = outterRadius * sin(angle[i] * M_PI / 180.0);
697
 
    inner[i][0]  = innerRadius * cos((angle[i] + 36.0) * M_PI / 180.0);
698
 
    inner[i][1]  = innerRadius * sin((angle[i] + 36.0) * M_PI / 180.0);
699
 
  }
700
 
 
701
 
  cairo_move_to(cr, outter[0][0], outter[0][1]);
702
 
  cairo_line_to(cr, inner[0][0], inner[0][1]);
703
 
  cairo_line_to(cr, outter[1][0], outter[1][1]);
704
 
  cairo_line_to(cr, inner[1][0], inner[1][1]);
705
 
  cairo_line_to(cr, outter[2][0], outter[2][1]);
706
 
  cairo_line_to(cr, inner[2][0], inner[2][1]);
707
 
  cairo_line_to(cr, outter[3][0], outter[3][1]);
708
 
  cairo_line_to(cr, inner[3][0], inner[3][1]);
709
 
  cairo_line_to(cr, outter[4][0], outter[4][1]);
710
 
  cairo_line_to(cr, inner[4][0], inner[4][1]);
711
 
  cairo_close_path(cr);
712
 
}
713
 
 
714
681
void Style::Impl::SetDefaultValues()
715
682
{
716
683
  // button-label
1791
1758
  return true;
1792
1759
}
1793
1760
 
1794
 
bool Style::StarEmpty(cairo_t* cr, nux::ButtonVisualState state)
1795
 
{
1796
 
  // sanity checks
1797
 
  if (cairo_status(cr) != CAIRO_STATUS_SUCCESS)
1798
 
    return false;
1799
 
 
1800
 
  if (cairo_surface_get_type(cairo_get_target(cr)) != CAIRO_SURFACE_TYPE_IMAGE)
1801
 
    return false;
1802
 
 
1803
 
  double w = cairo_image_surface_get_width(cairo_get_target(cr));
1804
 
  double h = cairo_image_surface_get_height(cairo_get_target(cr));
1805
 
  double radius = .85 * h / 2.0;
1806
 
 
1807
 
  cairo_save(cr);
1808
 
  cairo_translate(cr, w / 2.0, h / 2.0);
1809
 
  pimpl->Star(cr, radius);
1810
 
  cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 0.2);
1811
 
  cairo_fill_preserve(cr);
1812
 
  cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 0.5);
1813
 
        cairo_set_line_width(cr, 0.75);
1814
 
  cairo_stroke(cr);
1815
 
  cairo_restore(cr);
1816
 
 
1817
 
  return true;
1818
 
}
1819
 
 
1820
 
bool Style::StarHalf(cairo_t* cr, nux::ButtonVisualState state)
1821
 
{
1822
 
  // sanity checks
1823
 
  if (cairo_status(cr) != CAIRO_STATUS_SUCCESS)
1824
 
    return false;
1825
 
 
1826
 
  if (cairo_surface_get_type(cairo_get_target(cr)) != CAIRO_SURFACE_TYPE_IMAGE)
1827
 
    return false;
1828
 
 
1829
 
  double w = cairo_image_surface_get_width(cairo_get_target(cr));
1830
 
  double h = cairo_image_surface_get_height(cairo_get_target(cr));
1831
 
  double radius = .85 * h / 2.0;
1832
 
 
1833
 
  cairo_pattern_t* pattern = NULL;
1834
 
  pattern = cairo_pattern_create_linear(0.0, 0.0, w, 0.0);
1835
 
  cairo_pattern_add_color_stop_rgba(pattern, 0.0,        1.0, 1.0, 1.0, 1.0);
1836
 
  cairo_pattern_add_color_stop_rgba(pattern,  .5,        1.0, 1.0, 1.0, 1.0);
1837
 
  cairo_pattern_add_color_stop_rgba(pattern,  .5 + 0.01, 1.0, 1.0, 1.0, 0.2);
1838
 
  cairo_pattern_add_color_stop_rgba(pattern, 1.0,        1.0, 1.0, 1.0, 0.2);
1839
 
  cairo_set_source(cr, pattern);
1840
 
 
1841
 
  cairo_save(cr);
1842
 
  cairo_translate(cr, w / 2.0, h / 2.0);
1843
 
  pimpl->Star(cr, radius);
1844
 
  cairo_fill_preserve(cr);
1845
 
  cairo_pattern_destroy(pattern);
1846
 
  cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 0.5);
1847
 
        cairo_set_line_width(cr, 0.75);
1848
 
  cairo_stroke(cr);
1849
 
  cairo_restore(cr);
1850
 
 
1851
 
  return true;
1852
 
}
1853
 
 
1854
 
bool Style::StarFull(cairo_t* cr, nux::ButtonVisualState state)
1855
 
{
1856
 
  // sanity checks
1857
 
  if (cairo_status(cr) != CAIRO_STATUS_SUCCESS)
1858
 
    return false;
1859
 
 
1860
 
  if (cairo_surface_get_type(cairo_get_target(cr)) != CAIRO_SURFACE_TYPE_IMAGE)
1861
 
    return false;
1862
 
 
1863
 
  double w = cairo_image_surface_get_width(cairo_get_target(cr));
1864
 
  double h = cairo_image_surface_get_height(cairo_get_target(cr));
1865
 
  double radius = .85 * h / 2.0;
1866
 
 
1867
 
  cairo_save(cr);
1868
 
  cairo_translate(cr, w / 2.0, h / 2.0);
1869
 
  pimpl->Star(cr, radius);
1870
 
  cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0);
1871
 
  cairo_fill_preserve(cr);
1872
 
  cairo_stroke(cr); // to make sure it's as "large" as the empty and half ones
1873
 
  cairo_restore(cr);
1874
 
 
1875
 
  return true;
1876
 
}
1877
 
 
1878
1761
bool Style::MultiRangeSegment(cairo_t*    cr,
1879
1762
                              nux::ButtonVisualState  state,
1880
1763
                              std::string const& label,
2271
2154
  return pimpl->group_coverflow_texture_.texture();
2272
2155
}
2273
2156
 
 
2157
nux::BaseTexture* Style::GetStarDeselectedIcon()
 
2158
{
 
2159
  return pimpl->star_deselected_texture_.texture();
 
2160
}
 
2161
 
 
2162
nux::BaseTexture* Style::GetStarSelectedIcon()
 
2163
{
 
2164
  return pimpl->star_selected_texture_.texture();
 
2165
}
 
2166
 
 
2167
nux::BaseTexture* Style::GetStarHighlightIcon()
 
2168
{
 
2169
  return pimpl->star_highlight_texture_.texture();
 
2170
}
 
2171
 
2274
2172
nux::BaseTexture* Style::GetDashShine()
2275
2173
{
2276
2174
  return pimpl->dash_shine_.texture();