diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2024-06-30 20:46:13 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2024-06-30 20:46:13 +0200 |
commit | 9b3a82a302bd88c64bb714b009d223f8683f7178 (patch) | |
tree | 9c387fef03143f2f5f809672bf51e6495f874050 /src/page-icon.vala | |
parent | a675d0fb9f307b714d0b9cf19690d2b08b666d7c (diff) | |
parent | bca1cc8681bbaf662dabc961f84b06adc1255e08 (diff) |
Merge branch 'feature/upstream' into develop
Diffstat (limited to 'src/page-icon.vala')
-rw-r--r-- | src/page-icon.vala | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/src/page-icon.vala b/src/page-icon.vala deleted file mode 100644 index 3e3fa93..0000000 --- a/src/page-icon.vala +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (C) 2009-2017 Canonical Ltd. - * Author: Robert Ancell <robert.ancell@canonical.com>, - * Eduard Gotwig <g@ox.io> - * - * This program is free software: you can redistribute it and/or modify it under - * the terms of the GNU General Public License as published by the Free Software - * Foundation, either version 3 of the License, or (at your option) any later - * version. See http://www.gnu.org/copyleft/gpl.html the full text of the - * license. - */ - -public class PageIcon : Gtk.DrawingArea -{ - private char side; - private int position; - private int angle; - private const int MINIMUM_WIDTH = 20; - - public PageIcon (char side, int position, int angle) - { - this.side = side; - this.position = position; - this.angle = angle; - } - - public override void get_preferred_width (out int minimum_width, out int natural_width) - { - minimum_width = natural_width = MINIMUM_WIDTH; - } - - public override void get_preferred_height (out int minimum_height, out int natural_height) - { - minimum_height = natural_height = (int) Math.round (MINIMUM_WIDTH * Math.SQRT2); - } - - public override void get_preferred_height_for_width (int width, out int minimum_height, out int natural_height) - { - minimum_height = natural_height = (int) (width * Math.SQRT2); - } - - public override void get_preferred_width_for_height (int height, out int minimum_width, out int natural_width) - { - minimum_width = natural_width = (int) (height / Math.SQRT2); - } - - public override bool draw (Cairo.Context c) - { - var w = get_allocated_width (); - var h = get_allocated_height (); - if (w * Math.SQRT2 > h) - w = (int) Math.round (h / Math.SQRT2); - else - h = (int) Math.round (w * Math.SQRT2); - - c.translate ((get_allocated_width () - w) / 2, (get_allocated_height () - h) / 2); - - bool dark = Hdy.StyleManager.get_default ().dark; - bool hc = Hdy.StyleManager.get_default ().high_contrast; - - if (dark && !hc) - c.rectangle (1, 1, w - 2, h - 2); - else - c.rectangle (0, 0, w, h); - - Gdk.RGBA rgba = {}; - - switch (side) - { - case 'F': - /* Purple 2 */ - rgba.parse ("#c061cb"); - break; - case 'B': - /* Orange 3 */ - rgba.parse ("#ff7800"); - break; - case 'U': - /* green 4 */ - rgba.parse ("#5cc02e"); - break; - case 'R': - /* blue 4 */ - rgba.parse ("#0deee7"); - break; - default: - /* Yellow 3 to Red 2 */ - Gdk.RGBA start = {}, end = {}; - start.parse ("#f6d32d"); - end.parse ("#ed333b"); - - double progress = position / 5.0; - rgba.red = start.red + (end.red - start.red) * progress; - rgba.green = start.green + (end.green - start.green) * progress; - rgba.blue = start.blue + (end.blue - start.blue) * progress; - break; - } - - rgba.alpha = 0.3; - - Gdk.cairo_set_source_rgba (c, rgba); - c.fill (); - - c.set_line_width (1.0); - if (hc && dark) - c.set_source_rgba (1, 1, 1, 0.5); - else if (hc) - c.set_source_rgba (0, 0, 0, 0.5); - else - c.set_source_rgba (0, 0, 0, 0.15); - - c.rectangle (0.5, 0.5, w - 1, h - 1); - c.stroke (); - - if (dark) - c.set_source_rgb (1, 1, 1); - else - c.set_source_rgb (0, 0, 0); - - var text = @"$(position + 1)"; - Cairo.TextExtents extents; - - var rad = Math.PI / 180.0 * angle; - c.text_extents (text, out extents); - c.translate ((w - extents.width) * 0.5 - 0.5, extents.height + (h - extents.height) * 0.5 - 0.5); - c.rotate(rad); - // only correct for 0 and 180 degree - var tx = (1.0 - Math.sin(rad)) * extents.width / 2; - var ty = (1.0 - Math.sin(rad)) * extents.height / 2; - c.translate(-tx, +ty); - c.show_text (text); - - return true; - } -} |