summaryrefslogtreecommitdiff
path: root/src/linux/logo.m
diff options
context:
space:
mode:
authorrandomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64>2012-01-08 23:20:48 +0000
committerrandomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64>2012-01-08 23:20:48 +0000
commitf684562ab96876da07388da7d96063b5c22bdb4d (patch)
treed77e6766f2ac93507bf966f58288e2f46f455af0 /src/linux/logo.m
parente9b614e436b5720c1b2c51a07c5c063197cbf1e1 (diff)
GTK: all icons are now stored in the executable
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@360 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'src/linux/logo.m')
-rw-r--r--src/linux/logo.m65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/linux/logo.m b/src/linux/logo.m
new file mode 100644
index 0000000..1bf006d
--- /dev/null
+++ b/src/linux/logo.m
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2012 Alex Merry <alex.merry@kdemail.net>
+ *
+ * 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 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#import "logo.h"
+#include <gdk-pixbuf/gdk-pixdata.h>
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpointer-sign"
+#import "logodata.m"
+#pragma GCC diagnostic pop
+
+static GdkPixbuf *pixbufCache[LOGO_SIZE_COUNT];
+
+GdkPixbuf *get_logo (LogoSize size) {
+ const GdkPixdata *data = NULL;
+ switch (size) {
+ case LOGO_SIZE_16:
+ data = &logo16;
+ break;
+ case LOGO_SIZE_24:
+ data = &logo24;
+ break;
+/* case LOGO_SIZE_32:
+ data = &logo32;
+ break;
+*/
+ case LOGO_SIZE_48:
+ data = &logo48;
+ break;
+ case LOGO_SIZE_64:
+ data = &logo64;
+ break;
+ case LOGO_SIZE_128:
+ data = &logo128;
+ break;
+ default:
+ return NULL;
+ };
+ if (pixbufCache[size]) {
+ g_object_ref (pixbufCache[size]);
+ return pixbufCache[size];
+ } else {
+ GdkPixbuf *buf = gdk_pixbuf_from_pixdata (data, FALSE, NULL);
+ pixbufCache[size] = buf;
+ g_object_add_weak_pointer (G_OBJECT (buf), (void**)(&(pixbufCache[size])));
+ return buf;
+ }
+}
+
+// vim:ft=objc:ts=8:et:sts=4:sw=4
+