1. 05 Oct, 2014 1 commit
    • Jasper St. Pierre's avatar
      cssshadowvalue: Add a cache for blurred Pango layouts · dadc37e6
      Jasper St. Pierre authored
      Drawing text with Pango is quite expensive, and drawing text and also
      blurring it is *really* expensive. To prevent us from drawing a lot of
      text and then blurring it a lot is *really* expensive.
      
      We now cache the blurred pixels for the last layout and shadow we made,
      which means we can repeatedly draw labels with a blurred text-shadow
      extremely fast.
      
      To detect whether the shadow is up-to-date, we track the serial of the
      PangoLayout alongside the radius of the box shadow. We don't support
      inset shadows nor spread on text-shadow, so we don't need to track
      these.
      dadc37e6
  2. 03 Oct, 2014 3 commits
  3. 02 Sep, 2014 1 commit
  4. 01 Sep, 2014 1 commit
  5. 29 Aug, 2014 1 commit
  6. 02 Aug, 2014 1 commit
    • Jasper St. Pierre's avatar
      gtkcssshadowvalue: Don't double-apply the alpha to shadows · 9f2e0902
      Jasper St. Pierre authored
      It turns out that when we were painting the shadows, we painted the them
      with the base color once, which contained the alpha, and then blurred it
      and used it as a mask for the fill, which has the fill again.
      
      To fix this, always paint the base surface with full alpha. The existing
      code applies the blur conditionally sometimes in weird ways, so the code
      shuffling fix may not look correct, but be assured it is. If the blur
      happens, the new cr we return has the *default* color applied, which is
      fully opaque black, which works perfectly against the A8 surface.
      
      The fallback spinner code needs some modification, since it is
      intentionally using the alpha to paint the lobes which are "in the past".
      Since we shouldn't be hitting this fallback path very often, we use a
      temporary group and paint it with paint_with_alpha, even though it is
      slow.
      9f2e0902
  7. 29 Jul, 2014 2 commits
  8. 10 Jun, 2014 1 commit
  9. 09 Jun, 2014 1 commit
    • Benjamin Otte's avatar
      css: Parse text-shadow values properly · 3759190c
      Benjamin Otte authored
      We used to accept the same syntax for text-shadow and icon-shadow as
      we accept for box-shadow. However, box-shadow does accept a spread and
      the inset keyword while the others should not.
      3759190c
  10. 03 Feb, 2014 1 commit
  11. 31 Aug, 2013 1 commit
  12. 03 Jul, 2013 1 commit
    • Alexander Larsson's avatar
      css: Add a scale argument to css-value compute vfunc · af2c40bd
      Alexander Larsson authored
      We need to be able to compute different GtkCssImage values
      depending on the scale, and we need this at compute time so that
      we don't need to read any images other than the scale in used (to
      e.g. calculate the image size). GtkStyleProviderPrivate is shared
      for all style contexts, so its not right.
      af2c40bd
  13. 06 May, 2013 5 commits
  14. 22 Apr, 2013 1 commit
  15. 09 Apr, 2013 1 commit
  16. 08 Nov, 2012 1 commit
  17. 16 Oct, 2012 1 commit
  18. 28 Sep, 2012 1 commit
    • Benjamin Otte's avatar
      css: Huge refactoring to avoid computing wrong values · 1454ba15
      Benjamin Otte authored
      Here's the shortest description of the bug I can come up with:
      When computing values, we have 3 kinds of dependencies:
      (1) other properties ("currentColor" or em values)
      (2) inherited properties ("inherit")
      (3) generic things from the theme (@keyframes or @define-color)
      Previously, we passed the GtkStyleContext as an argument, because it
      provided these 3 things using:
      (1) _gtk_style_context_peek_property()
      (2) _gtk_style_context_peek_property(gtk_style_context_get_parent())
      (3) context->priv->cascade
      
      However, this makes it impossible to lookup values other than the ones
      accessible via _gtk_style_context_peek_property(). And this is exactly
      what we are doing in gtk_style_context_update_cache(). So when the cache
      updates encountered case (1), they were looking up the values from the
      wrong style data.
      
      So this large patch essentially does nothing but replace the
      context argument in all compute functions with new arguments for the 3
      cases above:
      (1) values
      (2) parent_values
      (3) provider
      
      We apparently have a lot of computing code.
      1454ba15
  19. 21 Sep, 2012 1 commit
  20. 20 Sep, 2012 6 commits
  21. 03 Sep, 2012 1 commit
    • Benjamin Otte's avatar
      cssvalue: Pass property ID to transition function · e3fc081c
      Benjamin Otte authored
      This is to allow animating arrays properly. I'm not really thrilled
      about this solution (we leak propertys into the values again...), but
      it's the best I can come up with - I prefer it to having N different
      array types...
      e3fc081c
  22. 28 Aug, 2012 5 commits
    • Matthias Clasen's avatar
      27fd3fdf
    • Benjamin Otte's avatar
      css: Introduce dependencies for value computations · 0e2f35ed
      Benjamin Otte authored
      When values are computed, they might depend on various other values and
      we need to track this so we can update the values when those other
      values change. This is the first step in making that happen.
      
      This patch does not do any dependency tracking at all, instead it uses
      GTK_CSS_DEPENDS_ON_EVERYTHING as a sort of FIXME.
      0e2f35ed
    • Benjamin Otte's avatar
      css: Fold color value computation into gtksymboliccolor.c · 09f9fd42
      Benjamin Otte authored
      This gets rid of the public function
      _gtk_css_rgba_value_compute_from_symbolic().
      The fallback is now handled using a switch statement instead of letting
      the caller pass the function.
      09f9fd42
    • Benjamin Otte's avatar
      css: Pass property_id to compute function · 9b4ed662
      Benjamin Otte authored
      This is a reorganization of how value computing should be done.
      Previously the GtkCssStyleProperty.compute vfunc was supposed to take
      care of special cases when it needed those for computation. However,
      this proved to be very complicated in cases where values were nested and
      only the last value (of a common type) needed to be special cased.
      
      A common example for this was the fallback handling for unresolvable
      colors.
      
      Now, we pass the property's ID along with all compute functions so we
      can do the special casing where it's necessary.
      Note that no actual changes happen in this commit. This will happen in
      follow-ups.
      9b4ed662
    • Benjamin Otte's avatar
      css: Introduce _gtk_css_value_compute() · 9b953829
      Benjamin Otte authored
      This commit is essentially a large reorganization. Instead of all value
      subtypes having their own compute function, there is the general
      _gtk_css_value_compute() function that then calls a vfunc on the
      subtype.
      9b953829
  23. 01 May, 2012 2 commits