diff -r 5f4395ec5db0 -r 04e140bdeb0b src/colors.cc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/colors.cc Fri Dec 13 20:01:49 2013 +0200
@@ -0,0 +1,78 @@
+/*
+ * LDForge: LDraw parts authoring CAD
+ * Copyright (C) 2013 Santeri Piippo
+ *
+ * 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.
+ *
+ * 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 .
+ * =====================================================================
+ *
+ * colors.cpp: LDraw color management. LDConfig.ldr parsing is not here!
+ * TODO: Make LDColor more full-fledged, add support for direct colors.
+ * TODO: g_LDColors should probably be a map.
+ */
+
+#include "main.h"
+#include "colors.h"
+#include "document.h"
+#include "misc.h"
+#include "gui.h"
+#include "ldconfig.h"
+#include
+
+static LDColor* g_LDColors[MAX_COLORS];
+
+// =============================================================================
+// -----------------------------------------------------------------------------
+void initColors()
+{ LDColor* col;
+ log ("%1: initializing color information.\n", __func__);
+
+ // Always make sure there's 16 and 24 available. They're special like that.
+ col = new LDColor;
+ col->faceColor = col->hexcode = "#AAAAAA";
+ col->edgeColor = Qt::black;
+ g_LDColors[maincolor] = col;
+
+ col = new LDColor;
+ col->faceColor = col->edgeColor = col->hexcode = "#000000";
+ g_LDColors[edgecolor] = col;
+
+ parseLDConfig();
+}
+
+// =============================================================================
+// -----------------------------------------------------------------------------
+LDColor* getColor (int colnum)
+{ // Check bounds
+ if (colnum < 0 || colnum >= MAX_COLORS)
+ return null;
+
+ return g_LDColors[colnum];
+}
+
+// =============================================================================
+// -----------------------------------------------------------------------------
+void setColor (int colnum, LDColor* col)
+{ if (colnum < 0 || colnum >= MAX_COLORS)
+ return;
+
+ g_LDColors[colnum] = col;
+}
+
+// =============================================================================
+// -----------------------------------------------------------------------------
+int luma (QColor& col)
+{ return (0.2126f * col.red()) +
+ (0.7152f * col.green()) +
+ (0.0722f * col.blue());
+}