[opengtl-commits] [526] move library stuff in a subdir |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/opengtl-commits Archives
]
Revision: 526
Author: cyrille
Date: 2008-12-07 23:04:14 +0100 (Sun, 07 Dec 2008)
Log Message:
-----------
move library stuff in a subdir
Added Paths:
-----------
trunk/libQtGTL/libQtGTL/
trunk/libQtGTL/libQtGTL/CMakeLists.txt
trunk/libQtGTL/libQtGTL/ColorConversions_p.cpp
trunk/libQtGTL/libQtGTL/ColorConversions_p.h
trunk/libQtGTL/libQtGTL/ParametersWidget.cpp
trunk/libQtGTL/libQtGTL/ParametersWidget.h
trunk/libQtGTL/libQtGTL/ParametersWidget_p.cpp
trunk/libQtGTL/libQtGTL/ParametersWidget_p.h
trunk/libQtGTL/libQtGTL/RgbaDialog_p.cpp
trunk/libQtGTL/libQtGTL/RgbaDialog_p.h
trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.cpp
trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.h
trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.cpp
trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.h
trunk/libQtGTL/libQtGTL/UiRgbaDialog.ui
Removed Paths:
-------------
trunk/libQtGTL/CMakeLists.txt
trunk/libQtGTL/ColorConversions_p.cpp
trunk/libQtGTL/ColorConversions_p.h
trunk/libQtGTL/ParametersWidget.cpp
trunk/libQtGTL/ParametersWidget.h
trunk/libQtGTL/ParametersWidget_p.cpp
trunk/libQtGTL/ParametersWidget_p.h
trunk/libQtGTL/RgbaDialog_p.cpp
trunk/libQtGTL/RgbaDialog_p.h
trunk/libQtGTL/SpinBoxSliderConnector_p.cpp
trunk/libQtGTL/SpinBoxSliderConnector_p.h
trunk/libQtGTL/TriangleColorSelector_p.cpp
trunk/libQtGTL/TriangleColorSelector_p.h
trunk/libQtGTL/UiRgbaDialog.ui
Deleted: trunk/libQtGTL/CMakeLists.txt
===================================================================
--- trunk/libQtGTL/CMakeLists.txt 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/CMakeLists.txt 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,32 +0,0 @@
-set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
-
-find_package(OpenShiva REQUIRED)
-find_package(Qt4 REQUIRED)
-
-include_directories(${QT_QTGUI_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${OPENSHIVA_INCLUDE_DIR})
-
-set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/)
-
-cmake_minimum_required(VERSION 2.6)
-
-############################### libQtGTL ###############################
-
-set(libQtGTL_SRCS
- ParametersWidget.cpp
-# Private
- ColorConversions_p.cpp
- ParametersWidget_p.cpp
- SpinBoxSliderConnector_p.cpp
- TriangleColorSelector_p.cpp
- RgbaDialog_p.cpp
- )
-
-qt4_wrap_ui(libQtGTL_SRCS UiRgbaDialog.ui)
-
-qt4_automoc(${libQtGTL_SRCS})
-
-add_library(libQtGTL SHARED ${libQtGTL_SRCS})
-target_link_libraries(libQtGTL ${QT_QTGUI_LIBRARY} ${OPENSHIVA_LIBRARIES} )
-
-install(TARGETS libQtGTL DESTINATION ${LIB_INSTALL_DIR} )
-install( FILES ParametersWidget.h DESTINATION ${INCLUDE_INSTALL_DIR}/QtGTL )
Deleted: trunk/libQtGTL/ColorConversions_p.cpp
===================================================================
--- trunk/libQtGTL/ColorConversions_p.cpp 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/ColorConversions_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,423 +0,0 @@
-/*
- * Copyright (c) 2005 Boudewijn Rempt <boud@xxxxxxxxxxx>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <cmath>
-
-#include <qglobal.h>
-
-#include "ColorConversions_p.h"
-
-/**
- * A number of often-used conversions between color models
- */
-
-void rgb_to_hsv(int R, int G, int B, int *H, int *S, int *V)
-{
- unsigned int max = R;
- unsigned int min = R;
- unsigned char maxValue = 0; // r = 0, g = 1, b = 2
-
- // find maximum and minimum RGB values
- if(static_cast<unsigned int>(G) > max) {
- max = G;
- maxValue = 1;
- }
-
- if (static_cast<unsigned int>(B) > max)
- {
- max = B;
- maxValue = 2;
- }
-
- if(static_cast<unsigned int>(G) < min)
- min = G;
-
- if(static_cast<unsigned int>(B) < min )
- min = B;
-
- int delta = max - min;
- *V = max; // value
- *S = max ? (510 * delta + max) / ( 2 * max) : 0; // saturation
-
- // calc hue
- if(*S == 0)
- *H = -1; // undefined hue
- else
- {
- switch(maxValue)
- {
- case 0: // red
- if(G >= B)
- *H = (120 * (G - B) + delta) / (2 * delta);
- else
- *H = (120 * (G - B + delta) + delta) / (2 * delta) + 300;
- break;
- case 1: // green
- if(B > R)
- *H = 120 + (120 * (B - R) + delta) / (2 * delta);
- else
- *H = 60 + (120 * (B - R + delta) + delta) / (2 * delta);
- break;
- case 2: // blue
- if(R > G)
- *H = 240 + (120 * (R - G) + delta) / (2 * delta);
- else
- *H = 180 + (120 * (R - G + delta) + delta) / (2 * delta);
- break;
- }
- }
-}
-
-void hsv_to_rgb(int H, int S, int V, int *R, int *G, int *B)
-{
- *R = *G = *B = V;
-
- if (S != 0 && H != -1) { // chromatic
-
- if (H >= 360) {
- // angle > 360
- H %= 360;
- }
-
- unsigned int f = H % 60;
- H /= 60;
- unsigned int p = static_cast<unsigned int>(2*V*(255-S)+255)/510;
- unsigned int q, t;
-
- if (H & 1) {
- q = static_cast<unsigned int>(2 * V * (15300 - S * f) + 15300) / 30600;
- switch (H) {
- case 1:
- *R = static_cast<int>(q);
- *G = static_cast<int>(V);
- *B = static_cast<int>(p);
- break;
- case 3:
- *R = static_cast<int>(p);
- *G = static_cast<int>(q);
- *B = static_cast<int>(V);
- break;
- case 5:
- *R = static_cast<int>(V);
- *G = static_cast<int>(p);
- *B = static_cast<int>(q);
- break;
- }
- } else {
- t = static_cast<unsigned int>(2 * V * (15300 - (S * (60 - f))) + 15300) / 30600;
- switch (H) {
- case 0:
- *R = static_cast<int>(V);
- *G = static_cast<int>(t);
- *B = static_cast<int>(p);
- break;
- case 2:
- *R = static_cast<int>(p);
- *G = static_cast<int>(V);
- *B = static_cast<int>(t);
- break;
- case 4:
- *R = static_cast<int>(t);
- *G = static_cast<int>(p);
- *B = static_cast<int>(V);
- break;
- }
- }
- }
-}
-
-#define EPSILON 1e-6
-#define UNDEFINED_HUE -1
-
-void RGBToHSV(float r, float g, float b, float *h, float *s, float *v)
-{
- float max = qMax(r, qMax(g, b));
- float min = qMin(r, qMin(g, b));
-
- *v = max;
-
- if (max > EPSILON) {
- *s = (max - min) / max;
- } else {
- *s = 0;
- }
-
- if (*s < EPSILON) {
- *h = UNDEFINED_HUE;
- } else {
- float delta = max - min;
-
- if (r == max) {
- *h = (g - b) / delta;
- } else if (g == max) {
- *h = 2 + (b - r) / delta;
- } else {
- *h = 4 + (r - g) / delta;
- }
-
- *h *= 60;
- if (*h < 0) {
- *h += 360;
- }
- }
-}
-
-void HSVToRGB(float h, float s, float v, float *r, float *g, float *b)
-{
- if (s < EPSILON || h == UNDEFINED_HUE) {
- // Achromatic case
-
- *r = v;
- *g = v;
- *b = v;
- } else {
- float f, p, q, t;
- int i;
-
- if (h > 360 - EPSILON) {
- h -= 360;
- }
-
- h /= 60;
- i = static_cast<int>(floor(h));
- f = h - i;
- p = v * (1 - s);
- q = v * (1 - (s * f));
- t = v * (1 - (s * (1 - f)));
-
- switch (i) {
- case 0:
- *r = v;
- *g = t;
- *b = p;
- break;
- case 1:
- *r = q;
- *g = v;
- *b = p;
- break;
- case 2:
- *r = p;
- *g = v;
- *b = t;
- break;
- case 3:
- *r = p;
- *g = q;
- *b = v;
- break;
- case 4:
- *r = t;
- *g = p;
- *b = v;
- break;
- case 5:
- *r = v;
- *g = p;
- *b = q;
- break;
- }
- }
-}
-
-void rgb_to_hls(quint8 red, quint8 green, quint8 blue, float * hue, float * lightness, float * saturation)
-{
- float r = red / 255.0;
- float g = green / 255.0;
- float b = blue / 255.0;
- float h = 0;
- float l = 0;
- float s = 0;
-
- float max, min, delta;
-
- max = qMax(r, g);
- max = qMax(max, b);
-
- min = qMin(r, g);
- min = qMin(min, b);
-
- delta = max - min;
-
- l = (max + min) / 2;
-
- if (delta == 0) {
- // This is a gray, no chroma...
- h = 0;
- s = 0;
- }
- else {
- if ( l < 0.5)
- s = delta / ( max + min );
- else
- s = delta / ( 2 - max - min );
-
- float delta_r, delta_g, delta_b;
-
- delta_r = (( max - r ) / 6 ) / delta;
- delta_g = (( max - g ) / 6 ) / delta;
- delta_b = (( max - b ) / 6 ) / delta;
-
- if ( r == max )
- h = delta_b - delta_g;
- else if ( g == max)
- h = ( 1.0 / 3 ) + delta_r - delta_b;
- else if ( b == max)
- h = ( 2.0 / 3 ) + delta_g - delta_r;
-
- if (h < 0) h += 1;
- if (h > 1) h += 1;
-
- }
-
- *hue = h * 360;
- *saturation = s;
- *lightness = l;
-}
-
-float hue_value(float n1, float n2, float hue)
-{
- if (hue > 360 )
- hue = hue -360;
- else if (hue < 0 )
- hue = hue +360;
- if (hue < 60 )
- return n1 + (((n2 - n1) * hue) / 60);
- else if (hue < 180 )
- return n2;
- else if (hue < 240 )
- return n1 + (((n2 - n1) * (240 - hue)) / 60);
- else return n1;
-}
-
-
-void hls_to_rgb(float h, float l, float s, quint8 * r, quint8 * g, quint8 * b)
-{
- float m1, m2;
-
- if (l <= 0.5 )
- m2 = l * ( 1 + s );
- else
- m2 = l + s - l * s;
-
- m1 = 2 * l - m2;
-
- *r = (quint8)(hue_value(m1, m2, h + 120) * 255 + 0.5);
- *g = (quint8)(hue_value(m1, m2, h) * 255 + 0.5);
- *b = (quint8)(hue_value(m1, m2, h - 120) * 255 + 0.5);
-
-}
-
-void rgb_to_hls(quint8 r, quint8 g, quint8 b, int * h, int * l, int * s)
-{
- float hue, saturation, lightness;
-
- rgb_to_hls(r, g, b, &hue, &lightness, &saturation);
- *h = (int)(hue + 0.5);
- *l = (int)(lightness * 255 + 0.5);
- *s = (int)(saturation * 255 + 0.5);
-}
-
-void hls_to_rgb(int h, int l, int s, quint8 * r, quint8 * g, quint8 * b)
-{
- float hue = h;
- float lightness = l / 255.0;
- float saturation = s / 255.0;
-
- hls_to_rgb(hue, lightness, saturation, r, g, b);
-}
-
-/*
-A Fast HSL-to-RGB Transform
-by Ken Fishkin
-from "Graphics Gems", Academic Press, 1990
-*/
-
-void RGBToHSL(float r, float g, float b, float *h, float *s, float *l)
-{
- float v;
- float m;
- float vm;
- float r2, g2, b2;
-
- v = qMax(r,g);
- v = qMax(v,b);
- m = qMin(r,g);
- m = qMin(m,b);
-
- if ((*l = (m + v) / 2.0) <= 0.0) {
- *h = UNDEFINED_HUE;
- *s = 0;
- return;
- }
- if ((*s = vm = v - m) > 0.0) {
- *s /= (*l <= 0.5) ? (v + m ) :
- (2.0 - v - m) ;
- } else {
- *h = UNDEFINED_HUE;
- return;
- }
-
-
- r2 = (v - r) / vm;
- g2 = (v - g) / vm;
- b2 = (v - b) / vm;
-
- if (r == v)
- *h = (g == m ? 5.0 + b2 : 1.0 - g2);
- else if (g == v)
- *h = (b == m ? 1.0 + r2 : 3.0 - b2);
- else
- *h = (r == m ? 3.0 + g2 : 5.0 - r2);
-
- *h *= 60;
-}
-
-void HSLToRGB(float h, float sl, float l, float *r, float *g, float *b)
-
-{
- float v;
-
- v = (l <= 0.5) ? (l * (1.0 + sl)) : (l + sl - l * sl);
- if (v <= 0) {
- *r = *g = *b = 0.0;
- } else {
- float m;
- float sv;
- int sextant;
- float fract, vsf, mid1, mid2;
-
- m = l + l - v;
- sv = (v - m ) / v;
- h /= 60.0;
- sextant = static_cast<int>(h);
- fract = h - sextant;
- vsf = v * sv * fract;
- mid1 = m + vsf;
- mid2 = v - vsf;
- switch (sextant) {
- case 0: *r = v; *g = mid1; *b = m; break;
- case 1: *r = mid2; *g = v; *b = m; break;
- case 2: *r = m; *g = v; *b = mid1; break;
- case 3: *r = m; *g = mid2; *b = v; break;
- case 4: *r = mid1; *g = m; *b = v; break;
- case 5: *r = v; *g = m; *b = mid2; break;
- }
- }
-}
-
Deleted: trunk/libQtGTL/ColorConversions_p.h
===================================================================
--- trunk/libQtGTL/ColorConversions_p.h 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/ColorConversions_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2005 Boudewijn Rempt <boud@xxxxxxxxxxx>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _KIS_CONVERSIONS_H_
-#define _KIS_CONVERSIONS_H_
-
-#include <qglobal.h>
-
-/**
- * A number of often-used conversions between color models
- */
-
-// 8-bit integer versions. RGBSL are 0-255, H is 0-360.
- void rgb_to_hsv(int R, int G, int B, int *H, int *S, int *V);
- void hsv_to_rgb(int H, int S, int V, int *R, int *G, int *B);
-
-// Floating point versions. RGBSL are 0-1, H is 0-360.
- void RGBToHSV(float r, float g, float b, float *h, float *s, float *v);
- void HSVToRGB(float h, float s, float v, float *r, float *g, float *b);
-
- void RGBToHSL(float r, float g, float b, float *h, float *s, float *l);
- void HSLToRGB(float h, float sl, float l, float *r, float *g, float *b);
-
- void rgb_to_hls(quint8 r, quint8 g, quint8 b, float * h, float * l, float * s);
-
- float hue_value(float n1, float n2, float hue);
-
- void hls_to_rgb(float h, float l, float s, quint8 * r, quint8 * g, quint8 * b);
-
- void rgb_to_hls(quint8 r, quint8 g, quint8 b, int * h, int * l, int * s);
- void hls_to_rgb(int h, int l, int s, quint8 * r, quint8 * g, quint8 * b);
-
-#endif // _KIS_CONVERSIONS_H_
-
Deleted: trunk/libQtGTL/ParametersWidget.cpp
===================================================================
--- trunk/libQtGTL/ParametersWidget.cpp 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/ParametersWidget.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2 of the license.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "ParametersWidget.h"
-
-
-#include "ParametersWidget_p.h"
-
-using namespace QtGTL;
-
-ParametersWidget::ParametersWidget( QWidget* _parent ) : QWidget( _parent ), d(new Private)
-{
- d->kernel = 0;
- d->self = this;
-}
-
-ParametersWidget::~ParametersWidget()
-{
- delete d;
-}
-
-void ParametersWidget::setKernel( OpenShiva::Kernel* _kernel )
-{
- d->kernel = _kernel;
- d->regenerateWidget();
-}
Deleted: trunk/libQtGTL/ParametersWidget.h
===================================================================
--- trunk/libQtGTL/ParametersWidget.h 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/ParametersWidget.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2 of the license.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QTGTL_PARAMETERS_WIDGET_H_
-#define _QTGTL_PARAMETERS_WIDGET_H_
-
-#include <QWidget>
-
-namespace OpenShiva {
- class Kernel;
-};
-
-namespace QtGTL {
- class ParametersWidget : public QWidget {
- public:
- ParametersWidget( QWidget* );
- ~ParametersWidget();
- public:
- void setKernel( OpenShiva::Kernel* _kernel );
- private:
- struct Private;
- Private* const d;
- };
-}
-
-#endif
Deleted: trunk/libQtGTL/ParametersWidget_p.cpp
===================================================================
--- trunk/libQtGTL/ParametersWidget_p.cpp 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/ParametersWidget_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,172 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2 of the license.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "ParametersWidget_p.h"
-
-#include <OpenShiva/Kernel.h>
-#include <OpenShiva/KernelMetadata.h>
-#include <GTLCore/Value.h>
-#include <GTLCore/Metadata/Entry.h>
-#include <GTLCore/Metadata/Group.h>
-#include <GTLCore/Metadata/ParameterEntry.h>
-
-#include <QDoubleSpinBox>
-#include <QGridLayout>
-#include <QLabel>
-#include <QTabWidget>
-#include <QSlider>
-
-#include "SpinBoxSliderConnector_p.h"
-
-using namespace QtGTL;
-
-void ParametersWidget::Private::regenerateWidget()
-{
- delete currentWidget;
-
- if( kernel->metadata() and kernel->metadata()->parameters() )
- {
- const GTLCore::Metadata::Group* parameters = kernel->metadata()->parameters();
- // Is tabWidget ?
- QTabWidget* tabWidget = 0;
- QWidget* widget = new QWidget();
- foreach( const GTLCore::Metadata::Entry* entry, parameters->entries() )
- {
- if( entry->asGroup() and not entry->asParameterEntry() )
- {
- if(not tabWidget )
- {
- tabWidget = new QTabWidget( self );
- widget = new QWidget( );
- tabWidget->addTab( widget, kernel->name().c_str() );
- }
- break;
- }
- }
- // Set the currentWidget
- if( tabWidget )
- {
- currentWidget = tabWidget;
- } else {
- currentWidget = widget;
- }
-
- // Create widgets
- QGridLayout* widgetGridLayout = new QGridLayout(widget);
- int posInGrid = 0;
- foreach( const GTLCore::Metadata::Entry* entry, parameters->entries() )
- {
- if( const GTLCore::Metadata::ParameterEntry* pe = entry->asParameterEntry() )
- {
- createParameterEntryWidget( widget, widgetGridLayout, posInGrid, pe );
- ++posInGrid;
- } else if( const GTLCore::Metadata::Group* gr = entry->asGroup() )
- {
- Q_ASSERT( tabWidget );
- QWidget* groupWidget = new QWidget( );
- QGridLayout* groupWidgetGridLayout = new QGridLayout(groupWidget);
- int groupPosInGrid = 0;
- foreach( const GTLCore::Metadata::Entry* groupEntry, gr->entries() )
- {
- if( const GTLCore::Metadata::ParameterEntry* gpe = entry->asParameterEntry() )
- {
- createParameterEntryWidget( groupWidget, groupWidgetGridLayout, groupPosInGrid, gpe );
- ++groupPosInGrid;
- }
- }
- tabWidget->addTab( groupWidget, gr->name().c_str() );
- }
- }
-
- } else {
- currentWidget = new QLabel( QObject::tr( "No configuration" ), self );
- }
-
-}
-
-void ParametersWidget::Private::createParameterEntryWidget( QWidget* _parent, QGridLayout* _gridLayout, int _layoutIndex, const GTLCore::Metadata::ParameterEntry* _parameterEntry )
-{
- // Label
- QLabel* label = new QLabel( _parameterEntry->name().c_str(), _parent);
- _gridLayout->addWidget(label, _layoutIndex, 0, 1, 1);
- switch( _parameterEntry->widgetType() )
- {
- case GTLCore::Metadata::ParameterEntry::IntegerWidget:
- {
- // Integer spinbox
- QSpinBox* spinBox = new QSpinBox(_parent);
- _gridLayout->addWidget(spinBox, _layoutIndex, 1, 1, 1);
-
- // Slider
- QSlider* horizontalSlider = new QSlider(_parent);
- horizontalSlider->setOrientation(Qt::Horizontal);
- _gridLayout->addWidget(horizontalSlider, _layoutIndex, 2, 1, 1);
-
- connect( spinBox, SIGNAL(valueChanged(int)), horizontalSlider, SLOT(setValue(int)));
- connect( horizontalSlider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
-
- int min = _parameterEntry->minimumValue().asInt32();
- int max = _parameterEntry->maximumValue().asInt32();
- int val = _parameterEntry->defaultValue().asInt32();
- spinBox->setMinimum( min );
- spinBox->setMaximum( max );
- spinBox->setValue( val );
- horizontalSlider->setMinimum( min );
- horizontalSlider->setMaximum( max );
- horizontalSlider->setValue( val );
- }
- break;
- case GTLCore::Metadata::ParameterEntry::FloatWidget:
- {
-
- // Double spinbox
- QDoubleSpinBox* doubleSpinBox = new QDoubleSpinBox(_parent);
- _gridLayout->addWidget(doubleSpinBox, _layoutIndex, 1, 1, 1);
-
- // Slider
- QSlider* horizontalSlider = new QSlider(_parent);
- horizontalSlider->setOrientation(Qt::Horizontal);
- _gridLayout->addWidget(horizontalSlider, _layoutIndex, 2, 1, 1);
- horizontalSlider->setMinimum( 0 );
- horizontalSlider->setMaximum( 1000 );
-
- SpinBoxSliderConnector* connector = new SpinBoxSliderConnector( _parent, doubleSpinBox, horizontalSlider);
- connect( connector, SIGNAL(valueChanged(double)), this, SLOT(updateKernelParameters()));
-
- // Set parameters
- doubleSpinBox->setMinimum( _parameterEntry->minimumValue().asFloat() );
- doubleSpinBox->setMaximum( _parameterEntry->maximumValue().asFloat() );
- doubleSpinBox->setValue( _parameterEntry->defaultValue().asFloat() );
- }
- break;
- case GTLCore::Metadata::ParameterEntry::CurveWidget:
-
- break;
- case GTLCore::Metadata::ParameterEntry::RgbColorWidget:
-
- break;
- }
-}
-
-void ParametersWidget::Private::updateKernelParameters()
-{
-}
-
-
-#include "ParametersWidget_p.moc"
Deleted: trunk/libQtGTL/ParametersWidget_p.h
===================================================================
--- trunk/libQtGTL/ParametersWidget_p.h 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/ParametersWidget_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2 of the license.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "ParametersWidget.h"
-
-#ifndef _QTGTL_PARAMETERS_WIDGET_P_H_
-#define _QTGTL_PARAMETERS_WIDGET_P_H_
-
-class QGridLayout;
-
-namespace GTLCore {
- namespace Metadata {
- class ParameterEntry;
- }
-}
-
-namespace QtGTL {
- class ParametersWidget::Private : public QObject {
- Q_OBJECT
- public:
- Private() : kernel(0), self(0), currentWidget(0) {}
- OpenShiva::Kernel* kernel;
- QWidget* self;
- QWidget* currentWidget;
- // Functions
- void regenerateWidget();
- private slots:
- void updateKernelParameters();
- private:
- void createParameterEntryWidget( QWidget* _parent, QGridLayout* _gridLayout, int _layoutIndex, const GTLCore::Metadata::ParameterEntry* _parameterEntry );
- };
-}
-
-#endif
Deleted: trunk/libQtGTL/RgbaDialog_p.cpp
===================================================================
--- trunk/libQtGTL/RgbaDialog_p.cpp 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/RgbaDialog_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2 of the license.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "RgbaDialog_p.h"
-
-#include "SpinBoxSliderConnector_p.h"
-
-#include "ui_UiRgbaDialog.h"
-
-using namespace QtGTL;
-
-RgbaDialog::RgbaDialog( QWidget* _widget ) : QDialog(_widget), m_rgbaDialog( new Ui_RgbaDialog )
-{
- m_rgbaDialog->setupUi( this );
-
- m_connectors[0] = new SpinBoxSliderConnector( this, m_rgbaDialog->doubleSpinBoxRed, m_rgbaDialog->sliderRed );
- connect( m_connectors[0], SIGNAL(valueChanged(double)), SLOT(spinBoxesValuesChanged()));
- m_connectors[1] = new SpinBoxSliderConnector( this, m_rgbaDialog->doubleSpinBoxGreen, m_rgbaDialog->sliderGreen );
- connect( m_connectors[1], SIGNAL(valueChanged(double)), SLOT(spinBoxesValuesChanged()));
- m_connectors[2] = new SpinBoxSliderConnector( this, m_rgbaDialog->doubleSpinBoxBlue, m_rgbaDialog->sliderBlue );
- connect( m_connectors[2], SIGNAL(valueChanged(double)), SLOT(spinBoxesValuesChanged()));
-}
-
-RgbaDialog::~RgbaDialog()
-{
-}
-
-QColor RgbaDialog::color()
-{
- QColor c = m_rgbaDialog->triangleSelector->color();
- c.setAlpha( m_rgbaDialog->doubleSpinBoxAlpha->value() * 255 );
- return c;
-}
-
-void RgbaDialog::triangleColorChanged( const QColor& c)
-{
- m_connectors[0]->setValue( c.red() / 255.0 );
- m_connectors[1]->setValue( c.green() / 255.0 );
- m_connectors[2]->setValue( c.blue() / 255.0 );
-}
-void RgbaDialog::spinBoxesValuesChanged()
-{
-
-}
Deleted: trunk/libQtGTL/RgbaDialog_p.h
===================================================================
--- trunk/libQtGTL/RgbaDialog_p.h 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/RgbaDialog_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2 of the license.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _RGBA_DIALOG_H_
-#define _RGBA_DIALOG_H_
-
-#include <QDialog>
-
-class Ui_RgbaDialog;
-
-namespace QtGTL {
-
- class SpinBoxSliderConnector;
-
- class RgbaDialog : public QDialog {
- public:
- RgbaDialog( QWidget* );
- ~RgbaDialog();
- QColor color();
- private slots:
- void triangleColorChanged( const QColor& );
- void spinBoxesValuesChanged();
- private:
- Ui_RgbaDialog* m_rgbaDialog;
- SpinBoxSliderConnector* m_connectors[3];
- };
-
-}
-#endif
Deleted: trunk/libQtGTL/SpinBoxSliderConnector_p.cpp
===================================================================
--- trunk/libQtGTL/SpinBoxSliderConnector_p.cpp 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/SpinBoxSliderConnector_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * either version 2, or (at your option) any later version of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "SpinBoxSliderConnector_p.h"
-
-using namespace QtGTL;
-
-#include <QDoubleSpinBox>
-#include <QSlider>
-
-SpinBoxSliderConnector::SpinBoxSliderConnector( QObject* _parent, QDoubleSpinBox* _spinBox, QSlider* _slider ) : QObject( _parent ), m_spinBox( _spinBox ), m_slider( _slider )
-{
- connect( m_spinBox, SIGNAL(valueChanged( double )), SLOT(spinBoxValueChanged( double ) ) );
- connect( m_slider, SIGNAL(valueChanged( int )), SLOT(sliderValueChanged( int ) ) );
-}
-
-SpinBoxSliderConnector::~SpinBoxSliderConnector()
-{
-}
-
-void SpinBoxSliderConnector::setValue( double _value )
-{
- m_spinBox->setValue( _value );
-}
-
-void SpinBoxSliderConnector::spinBoxValueChanged( double _value )
-{
- bool v = m_slider->blockSignals(true);
- m_slider->setValue( int(_value * ( m_slider->maximum() - m_slider->minimum() ) / ( m_spinBox->maximum() - m_spinBox->minimum() ) ) );
- m_slider->blockSignals(v);
- emit( valueChanged( m_spinBox->value() ) );
-}
-
-void SpinBoxSliderConnector::sliderValueChanged( int _value )
-{
- bool v = m_spinBox->blockSignals(true);
- m_spinBox->setValue( _value * ( m_spinBox->maximum() - m_spinBox->minimum() ) / ( m_slider->maximum() - m_slider->minimum() ) );
- m_spinBox->blockSignals(v);
- emit( valueChanged( m_spinBox->value() ) );
-}
-
-#include "SpinBoxSliderConnector_p.moc"
Deleted: trunk/libQtGTL/SpinBoxSliderConnector_p.h
===================================================================
--- trunk/libQtGTL/SpinBoxSliderConnector_p.h 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/SpinBoxSliderConnector_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2 of the license.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _SPINBOX_SLIDER_CONNECTOR_HPP_
-#define _SPINBOX_SLIDER_CONNECTOR_HPP_
-
-#include <QObject>
-
-class QDoubleSpinBox;
-class QSlider;
-
-namespace QtGTL {
-
- class SpinBoxSliderConnector : public QObject {
- Q_OBJECT
- public:
- SpinBoxSliderConnector( QObject* _parent, QDoubleSpinBox* _spinBox, QSlider* _slider );
- ~SpinBoxSliderConnector();
- void setValue( double _value );
- private slots:
- void spinBoxValueChanged( double _value );
- void sliderValueChanged( int _value );
- signals:
- void valueChanged( double _value );
- private:
- QDoubleSpinBox* m_spinBox;
- QSlider* m_slider;
- };
-
-}
-
-#endif
Deleted: trunk/libQtGTL/TriangleColorSelector_p.cpp
===================================================================
--- trunk/libQtGTL/TriangleColorSelector_p.cpp 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/TriangleColorSelector_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,375 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * 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 Lesser General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include "TriangleColorSelector_p.h"
-#include <math.h>
-
-#include <QMouseEvent>
-#include <QPainter>
-#include <QPixmap>
-#include "ColorConversions_p.h"
-
-enum CurrentHandle {
- NoHandle,
- HueHandle,
- ValueSaturationHandle };
-
-struct TriangleColorSelector::Private {
- QPixmap wheelPixmap;
- QPixmap trianglePixmap;
- int hue;
- int saturation;
- int value;
- int sizeColorSelector;
- qreal centerColorSelector;
- qreal wheelWidthProportion;
- qreal wheelWidth;
- qreal wheelNormExt;
- qreal wheelNormInt;
- qreal wheelInnerRadius;
- qreal triangleRadius;
- qreal triangleLength;
- qreal triangleHeight;
- qreal triangleBottom;
- qreal triangleTop;
- qreal normExt;
- qreal normInt;
- bool updateAllowed;
- CurrentHandle handle;
- qreal triangleHandleSize;
- bool invalidTriangle;
-};
-
-TriangleColorSelector::TriangleColorSelector(QWidget* parent) : QWidget(parent), d(new Private)
-{
- setMinimumHeight( 100 );
- setMinimumWidth( 100 );
- d->hue = 0;
- d->saturation = 0;
- d->value = 0;
- d->updateAllowed = true;
- setMouseTracking( true );
- updateTriangleCircleParameters();
- d->invalidTriangle = true;
-}
-
-TriangleColorSelector::~TriangleColorSelector()
-{
- delete d;
-}
-
-void TriangleColorSelector::updateTriangleCircleParameters()
-{
- d->sizeColorSelector = qMin(width(), height());
- d->centerColorSelector = 0.5 * d->sizeColorSelector;
- d->wheelWidthProportion = 0.3;
- d->wheelWidth = d->centerColorSelector * d->wheelWidthProportion;
- d->wheelNormExt = qAbs( d->centerColorSelector );
- d->wheelNormInt = qAbs( d->centerColorSelector * (1.0 - d->wheelWidthProportion));
- d->wheelInnerRadius = d->centerColorSelector * (1.0 - d->wheelWidthProportion);
- d->triangleRadius = d->wheelInnerRadius * 0.9;
- d->triangleLength = 3.0 / sqrt(3.0) * d->triangleRadius;
- d->triangleHeight = d->triangleLength * sqrt(3.0) * 0.5;
- d->triangleTop = 0.5 * d->sizeColorSelector - d->triangleRadius;
- d->triangleBottom = d->triangleHeight + d->triangleTop;
- d->triangleHandleSize = 10.0;
-}
-
-void TriangleColorSelector::paintEvent( QPaintEvent * event )
-{
- if( d->invalidTriangle )
- {
- generateTriangle();
- }
- Q_UNUSED(event);
- QPainter p(this);
- p.setRenderHint(QPainter::SmoothPixmapTransform);
- p.setRenderHint(QPainter::Antialiasing);
- QPointF pos(d->centerColorSelector, d->centerColorSelector);
- p.translate(QPointF( 0.5*width(), 0.5*height() ) );
- // Draw the wheel
- p.drawPixmap( -pos, d->wheelPixmap );
- // Draw the triangle
- p.save();
- p.rotate( hue() + 150 );
- p.drawPixmap( -pos , d->trianglePixmap );
- // Draw selectors
- p.restore();
- // Draw value,saturation selector
- // Compute coordinates
- {
- qreal vs_selector_ypos_ = value() / 255.0;
- qreal ls_ = (vs_selector_ypos_) * d->triangleLength; // length of the saturation on the triangle
- qreal vs_selector_xpos_ = ls_ * (saturation() / 255.0 - 0.5);
- // Draw it
- p.save();
- p.setPen( QPen( Qt::white, 1.0) );
- p.setBrush( color() );
- p.rotate( hue() + 150 );
- p.drawEllipse( QRectF( -d->triangleHandleSize*0.5 + vs_selector_xpos_,
- -d->triangleHandleSize*0.5 - (d->centerColorSelector - d->triangleTop) + vs_selector_ypos_ * d->triangleHeight,
- d->triangleHandleSize , d->triangleHandleSize ));
- }
- p.restore();
- // Draw Hue selector
- p.save();
- p.setPen( QPen( Qt::white, 1.0) );
- p.rotate( hue() - 90 );
- qreal hueSelectorWidth_ = 0.8;
- qreal hueSelectorOffset_ = 0.5 *( 1.0 - hueSelectorWidth_) * d->wheelWidth;
- qreal hueSelectorSize_ = 0.8 * d->wheelWidth;
- p.drawRect( QRectF( -1.5, -d->centerColorSelector + hueSelectorOffset_, 3.0, hueSelectorSize_ ));
- p.restore();
- p.end();
-}
-
-int TriangleColorSelector::hue() const
-{
- return d->hue;
-}
-
-void TriangleColorSelector::setHue(int h)
-{
- h = qBound(0, h, 360);
- d->hue = h;
- tellColorChanged();
- d->invalidTriangle = true;
- update();
-}
-
-int TriangleColorSelector::value() const
-{
- return d->value;
-}
-
-void TriangleColorSelector::setValue(int v)
-{
- v = qBound(0, v, 255);
- d->value = v;
- tellColorChanged();
- d->invalidTriangle = true;
- update();
-}
-
-int TriangleColorSelector::saturation() const
-{
- return d->saturation;
-}
-
-void TriangleColorSelector::setSaturation(int s)
-{
- s = qBound(0, s, 255);
- d->saturation = s;
- tellColorChanged();
- d->invalidTriangle = true;
- update();
-}
-
-void TriangleColorSelector::setHSV(int h, int s, int v)
-{
- h = qBound(0, h, 360);
- s = qBound(0, s, 255);
- v = qBound(0, v, 255);
- d->hue = h;
- d->value = v;
- d->saturation = s;
- tellColorChanged();
- d->invalidTriangle = true;
- update();
-}
-
-QColor TriangleColorSelector::color() const
-{
- int r,g,b;
- hsv_to_rgb( d->hue, d->saturation, d->value, &r, &g, &b);
- return QColor(r,g,b);
-}
-
-void TriangleColorSelector::setQColor(const QColor& c)
-{
- if(d->updateAllowed)
- {
- int hue;
- rgb_to_hsv( c.red(), c.green(), c.blue(), &hue, &d->saturation, &d->value);
- if( hue >= 0 && hue <= 360)
- d->hue = hue;
- d->invalidTriangle = true;
- update();
- }
-}
-
-void TriangleColorSelector::resizeEvent( QResizeEvent * event )
-{
- QWidget::resizeEvent( event );
- updateTriangleCircleParameters();
- generateWheel();
- d->invalidTriangle = true;
-}
-
-inline qreal pow2(qreal v)
-{
- return v*v;
-}
-
-void TriangleColorSelector::tellColorChanged()
-{
- d->updateAllowed = false;
- emit(colorChanged(color()));
- d->updateAllowed = true;
-}
-
-void TriangleColorSelector::generateTriangle()
-{
- QImage img(d->sizeColorSelector, d->sizeColorSelector, QImage::Format_ARGB32_Premultiplied);
- // Length of triangle
- int hue_ = hue();
-
- for(int y = 0; y < d->sizeColorSelector; y++)
- {
- qreal ynormalize = ( d->triangleTop - y ) / ( d->triangleTop - d->triangleBottom );
- qreal v = 255 * ynormalize;
- qreal ls_ = (ynormalize) * d->triangleLength;
- qreal startx_ = d->centerColorSelector - 0.5 * ls_;
- for(int x = 0; x < d->sizeColorSelector; x++)
- {
- qreal s = 255 * (x - startx_) / ls_;
- if(v < -1.0 || v > 256.0 || s < -1.0 || s > 256.0 )
- {
- img.setPixel(x,y, qRgba(0,0,0,0));
- } else {
- qreal va = 1.0, sa = 1.0;
- if( v < 0.0) { va = 1.0 + v; v = 0; }
- else if( v > 255.0 ) { va = 256.0 - v; v = 255; }
- if( s < 0.0) { sa = 1.0 + s; s = 0; }
- else if( s > 255.0 ) { sa = 256.0 - s; s = 255; }
- int r,g,b;
- hsv_to_rgb(hue_, (int)s, (int)v, &r, &g, &b);
- qreal coef = va * sa;
- if( coef < 0.999)
- {
- img.setPixel(x,y, qRgba( (int)(r * coef), (int)(g * coef), (int)(b * coef), (int)(255 * coef)));
- } else {
- img.setPixel(x,y, qRgba(r, g, b, 255 ));
- }
- }
- }
- }
-
- d->trianglePixmap = QPixmap::fromImage(img);
- d->invalidTriangle = false;
-}
-
-void TriangleColorSelector::generateWheel()
-{
- QImage img(d->sizeColorSelector, d->sizeColorSelector, QImage::Format_ARGB32_Premultiplied);
- for(int y = 0; y < d->sizeColorSelector; y++)
- {
- qreal yc = y - d->centerColorSelector;
- qreal y2 = pow2( yc );
- for(int x = 0; x < d->sizeColorSelector; x++)
- {
- qreal xc = x - d->centerColorSelector;
- qreal norm = sqrt(pow2( xc ) + y2);
- if( norm <= d->wheelNormExt + 1.0 && norm >= d->wheelNormInt - 1.0 )
- {
- qreal acoef = 1.0;
- if(norm > d->wheelNormExt ) acoef = (1.0 + d->wheelNormExt - norm);
- else if(norm < d->wheelNormInt ) acoef = (1.0 - d->wheelNormInt + norm);
- qreal angle = atan2(yc, xc);
- int h = (int)((180 * angle / M_PI) + 180);
- int r,g,b;
- hsv_to_rgb(h, 255, 255, &r, &g, &b);
- if( acoef < 0.999)
- {
- img.setPixel(x,y, qRgba( (int)(r * acoef), (int)(g * acoef), (int)(b * acoef), (int)(255 * acoef)));
- } else {
- img.setPixel(x,y, qRgba(r, g, b, 255 ));
- }
- } else {
- img.setPixel(x,y, qRgba(0,0,0,0));
- }
- }
- }
- d->wheelPixmap = QPixmap::fromImage(img);
-}
-
-void TriangleColorSelector::mouseReleaseEvent( QMouseEvent * event )
-{
- if(event->button() == Qt::LeftButton)
- {
- selectColorAt( event->x(), event->y());
- d->handle = NoHandle;
- }
- QWidget::mouseReleaseEvent( event );
-}
-
-void TriangleColorSelector::mousePressEvent( QMouseEvent * event )
-{
- if(event->button() == Qt::LeftButton)
- {
- d->handle = NoHandle;
- selectColorAt( event->x(), event->y());
- }
- QWidget::mousePressEvent( event );
-}
-
-void TriangleColorSelector::mouseMoveEvent( QMouseEvent * event )
-{
- if(event->buttons() & Qt::LeftButton)
- {
- selectColorAt( event->x(), event->y(), false );
- }
- QWidget::mouseMoveEvent( event);
-}
-
-void TriangleColorSelector::selectColorAt(int _x, int _y, bool checkInWheel)
-{
- Q_UNUSED( checkInWheel );
- qreal x = _x - 0.5*width();
- qreal y = _y - 0.5*height();
- // Check if the click is inside the wheel
- qreal norm = sqrt( x * x + y * y);
- if ( ( (norm < d->wheelNormExt) && (norm > d->wheelNormInt) && d->handle == NoHandle )
- || d->handle == HueHandle ) {
- d->handle = HueHandle;
- setHue( (int)(atan2(y, x) * 180 / M_PI ) + 180);
- update();
- }
- else {
- // Compute the s and v value, if they are in range, use them
- qreal rotation = -(hue() + 150) * M_PI / 180;
- qreal cr = cos(rotation);
- qreal sr = sin(rotation);
- qreal x1 = x * cr - y * sr; // <- now x1 gives the saturation
- qreal y1 = x * sr + y * cr; // <- now y1 gives the value
- y1 += d->wheelNormExt;
- qreal ynormalize = (d->triangleTop - y1 ) / ( d->triangleTop - d->triangleBottom );
- if( (ynormalize >= 0.0 && ynormalize <= 1.0 ) || d->handle == ValueSaturationHandle)
- {
- d->handle = ValueSaturationHandle;
- qreal ls_ = (ynormalize) * d->triangleLength; // length of the saturation on the triangle
- qreal sat = ( x1 / ls_ + 0.5) ;
- if((sat >= 0.0 && sat <= 1.0) || d->handle == ValueSaturationHandle)
- {
- setHSV( d->hue, sat * 255, ynormalize * 255);
- }
- }
- update();
- }
-}
-
-#include "TriangleColorSelector_p.moc"
Deleted: trunk/libQtGTL/TriangleColorSelector_p.h
===================================================================
--- trunk/libQtGTL/TriangleColorSelector_p.h 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/TriangleColorSelector_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2 of the license.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _TRIANGLE_COLOR_SELECTOR_H_
-#define _TRIANGLE_COLOR_SELECTOR_H_
-
-#include <QWidget>
-
-class TriangleColorSelector : public QWidget {
- Q_OBJECT
- public:
- TriangleColorSelector(QWidget* parent);
- ~TriangleColorSelector();
- protected: // events
- void paintEvent( QPaintEvent * event );
- void resizeEvent( QResizeEvent * event );
- void mouseReleaseEvent( QMouseEvent * event );
- void mousePressEvent( QMouseEvent * event );
- void mouseMoveEvent( QMouseEvent * event );
- public:
- int hue() const;
- int value() const;
- int saturation() const;
- QColor color() const;
- public slots:
- void setHue(int h);
- void setValue(int v);
- void setSaturation(int s);
- void setHSV(int h, int s, int v);
- void setQColor(const QColor& );
- signals:
- void colorChanged(const QColor& );
- private:
- void tellColorChanged();
- void generateTriangle();
- void generateWheel();
- void updateTriangleCircleParameters();
- void selectColorAt(int x, int y, bool checkInWheel = true);
- private:
- struct Private;
- Private* const d;
-};
-
-#endif
Deleted: trunk/libQtGTL/UiRgbaDialog.ui
===================================================================
--- trunk/libQtGTL/UiRgbaDialog.ui 2008-12-07 22:02:08 UTC (rev 525)
+++ trunk/libQtGTL/UiRgbaDialog.ui 2008-12-07 22:04:14 UTC (rev 526)
@@ -1,170 +0,0 @@
-<ui version="4.0" >
- <class>RgbaDialog</class>
- <widget class="QDialog" name="RgbaDialog" >
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>486</width>
- <height>318</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string>Dialog</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout" >
- <item>
- <widget class="TriangleColorSelector" native="1" name="triangleSelector" >
- <property name="minimumSize" >
- <size>
- <width>300</width>
- <height>300</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QVBoxLayout" name="verticalLayout" >
- <item>
- <layout class="QGridLayout" name="gridLayout" >
- <item row="1" column="0" colspan="2" >
- <widget class="QLabel" name="label" >
- <property name="text" >
- <string>Red:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" colspan="3" >
- <widget class="QSlider" name="sliderRed" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="3" column="0" colspan="2" >
- <widget class="QLabel" name="label_2" >
- <property name="text" >
- <string>Green:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1" colspan="2" >
- <widget class="QDoubleSpinBox" name="doubleSpinBoxGreen" />
- </item>
- <item row="4" column="0" colspan="3" >
- <widget class="QSlider" name="sliderGreen" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="5" column="0" >
- <widget class="QLabel" name="label_3" >
- <property name="text" >
- <string>Blue:</string>
- </property>
- </widget>
- </item>
- <item row="5" column="1" colspan="2" >
- <widget class="QDoubleSpinBox" name="doubleSpinBoxBlue" />
- </item>
- <item row="6" column="0" colspan="3" >
- <widget class="QSlider" name="sliderBlue" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="7" column="0" >
- <widget class="QLabel" name="label_4" >
- <property name="text" >
- <string>Alpha:</string>
- </property>
- </widget>
- </item>
- <item row="7" column="1" colspan="2" >
- <widget class="QDoubleSpinBox" name="doubleSpinBoxAlpha" />
- </item>
- <item row="8" column="0" colspan="3" >
- <widget class="QSlider" name="sliderAlpha" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="1" column="1" colspan="2" >
- <widget class="QDoubleSpinBox" name="doubleSpinBoxRed" />
- </item>
- </layout>
- </item>
- <item>
- <spacer name="verticalSpacer" >
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons" >
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>TriangleColorSelector</class>
- <extends>QWidget</extends>
- <header>TriangleColorSelector_p.h</header>
- <container>1</container>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>RgbaDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel" >
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>RgbaDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel" >
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
Copied: trunk/libQtGTL/libQtGTL/CMakeLists.txt (from rev 525, trunk/libQtGTL/CMakeLists.txt)
===================================================================
--- trunk/libQtGTL/libQtGTL/CMakeLists.txt (rev 0)
+++ trunk/libQtGTL/libQtGTL/CMakeLists.txt 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,32 @@
+set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
+
+find_package(OpenShiva REQUIRED)
+find_package(Qt4 REQUIRED)
+
+include_directories(${QT_QTGUI_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${OPENSHIVA_INCLUDE_DIR})
+
+set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/)
+
+cmake_minimum_required(VERSION 2.6)
+
+############################### libQtGTL ###############################
+
+set(libQtGTL_SRCS
+ ParametersWidget.cpp
+# Private
+ ColorConversions_p.cpp
+ ParametersWidget_p.cpp
+ SpinBoxSliderConnector_p.cpp
+ TriangleColorSelector_p.cpp
+ RgbaDialog_p.cpp
+ )
+
+qt4_wrap_ui(libQtGTL_SRCS UiRgbaDialog.ui)
+
+qt4_automoc(${libQtGTL_SRCS})
+
+add_library(libQtGTL SHARED ${libQtGTL_SRCS})
+target_link_libraries(libQtGTL ${QT_QTGUI_LIBRARY} ${OPENSHIVA_LIBRARIES} )
+
+install(TARGETS libQtGTL DESTINATION ${LIB_INSTALL_DIR} )
+install( FILES ParametersWidget.h DESTINATION ${INCLUDE_INSTALL_DIR}/QtGTL )
Property changes on: trunk/libQtGTL/libQtGTL/CMakeLists.txt
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/libQtGTL/libQtGTL/ColorConversions_p.cpp (from rev 525, trunk/libQtGTL/ColorConversions_p.cpp)
===================================================================
--- trunk/libQtGTL/libQtGTL/ColorConversions_p.cpp (rev 0)
+++ trunk/libQtGTL/libQtGTL/ColorConversions_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,423 @@
+/*
+ * Copyright (c) 2005 Boudewijn Rempt <boud@xxxxxxxxxxx>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <cmath>
+
+#include <qglobal.h>
+
+#include "ColorConversions_p.h"
+
+/**
+ * A number of often-used conversions between color models
+ */
+
+void rgb_to_hsv(int R, int G, int B, int *H, int *S, int *V)
+{
+ unsigned int max = R;
+ unsigned int min = R;
+ unsigned char maxValue = 0; // r = 0, g = 1, b = 2
+
+ // find maximum and minimum RGB values
+ if(static_cast<unsigned int>(G) > max) {
+ max = G;
+ maxValue = 1;
+ }
+
+ if (static_cast<unsigned int>(B) > max)
+ {
+ max = B;
+ maxValue = 2;
+ }
+
+ if(static_cast<unsigned int>(G) < min)
+ min = G;
+
+ if(static_cast<unsigned int>(B) < min )
+ min = B;
+
+ int delta = max - min;
+ *V = max; // value
+ *S = max ? (510 * delta + max) / ( 2 * max) : 0; // saturation
+
+ // calc hue
+ if(*S == 0)
+ *H = -1; // undefined hue
+ else
+ {
+ switch(maxValue)
+ {
+ case 0: // red
+ if(G >= B)
+ *H = (120 * (G - B) + delta) / (2 * delta);
+ else
+ *H = (120 * (G - B + delta) + delta) / (2 * delta) + 300;
+ break;
+ case 1: // green
+ if(B > R)
+ *H = 120 + (120 * (B - R) + delta) / (2 * delta);
+ else
+ *H = 60 + (120 * (B - R + delta) + delta) / (2 * delta);
+ break;
+ case 2: // blue
+ if(R > G)
+ *H = 240 + (120 * (R - G) + delta) / (2 * delta);
+ else
+ *H = 180 + (120 * (R - G + delta) + delta) / (2 * delta);
+ break;
+ }
+ }
+}
+
+void hsv_to_rgb(int H, int S, int V, int *R, int *G, int *B)
+{
+ *R = *G = *B = V;
+
+ if (S != 0 && H != -1) { // chromatic
+
+ if (H >= 360) {
+ // angle > 360
+ H %= 360;
+ }
+
+ unsigned int f = H % 60;
+ H /= 60;
+ unsigned int p = static_cast<unsigned int>(2*V*(255-S)+255)/510;
+ unsigned int q, t;
+
+ if (H & 1) {
+ q = static_cast<unsigned int>(2 * V * (15300 - S * f) + 15300) / 30600;
+ switch (H) {
+ case 1:
+ *R = static_cast<int>(q);
+ *G = static_cast<int>(V);
+ *B = static_cast<int>(p);
+ break;
+ case 3:
+ *R = static_cast<int>(p);
+ *G = static_cast<int>(q);
+ *B = static_cast<int>(V);
+ break;
+ case 5:
+ *R = static_cast<int>(V);
+ *G = static_cast<int>(p);
+ *B = static_cast<int>(q);
+ break;
+ }
+ } else {
+ t = static_cast<unsigned int>(2 * V * (15300 - (S * (60 - f))) + 15300) / 30600;
+ switch (H) {
+ case 0:
+ *R = static_cast<int>(V);
+ *G = static_cast<int>(t);
+ *B = static_cast<int>(p);
+ break;
+ case 2:
+ *R = static_cast<int>(p);
+ *G = static_cast<int>(V);
+ *B = static_cast<int>(t);
+ break;
+ case 4:
+ *R = static_cast<int>(t);
+ *G = static_cast<int>(p);
+ *B = static_cast<int>(V);
+ break;
+ }
+ }
+ }
+}
+
+#define EPSILON 1e-6
+#define UNDEFINED_HUE -1
+
+void RGBToHSV(float r, float g, float b, float *h, float *s, float *v)
+{
+ float max = qMax(r, qMax(g, b));
+ float min = qMin(r, qMin(g, b));
+
+ *v = max;
+
+ if (max > EPSILON) {
+ *s = (max - min) / max;
+ } else {
+ *s = 0;
+ }
+
+ if (*s < EPSILON) {
+ *h = UNDEFINED_HUE;
+ } else {
+ float delta = max - min;
+
+ if (r == max) {
+ *h = (g - b) / delta;
+ } else if (g == max) {
+ *h = 2 + (b - r) / delta;
+ } else {
+ *h = 4 + (r - g) / delta;
+ }
+
+ *h *= 60;
+ if (*h < 0) {
+ *h += 360;
+ }
+ }
+}
+
+void HSVToRGB(float h, float s, float v, float *r, float *g, float *b)
+{
+ if (s < EPSILON || h == UNDEFINED_HUE) {
+ // Achromatic case
+
+ *r = v;
+ *g = v;
+ *b = v;
+ } else {
+ float f, p, q, t;
+ int i;
+
+ if (h > 360 - EPSILON) {
+ h -= 360;
+ }
+
+ h /= 60;
+ i = static_cast<int>(floor(h));
+ f = h - i;
+ p = v * (1 - s);
+ q = v * (1 - (s * f));
+ t = v * (1 - (s * (1 - f)));
+
+ switch (i) {
+ case 0:
+ *r = v;
+ *g = t;
+ *b = p;
+ break;
+ case 1:
+ *r = q;
+ *g = v;
+ *b = p;
+ break;
+ case 2:
+ *r = p;
+ *g = v;
+ *b = t;
+ break;
+ case 3:
+ *r = p;
+ *g = q;
+ *b = v;
+ break;
+ case 4:
+ *r = t;
+ *g = p;
+ *b = v;
+ break;
+ case 5:
+ *r = v;
+ *g = p;
+ *b = q;
+ break;
+ }
+ }
+}
+
+void rgb_to_hls(quint8 red, quint8 green, quint8 blue, float * hue, float * lightness, float * saturation)
+{
+ float r = red / 255.0;
+ float g = green / 255.0;
+ float b = blue / 255.0;
+ float h = 0;
+ float l = 0;
+ float s = 0;
+
+ float max, min, delta;
+
+ max = qMax(r, g);
+ max = qMax(max, b);
+
+ min = qMin(r, g);
+ min = qMin(min, b);
+
+ delta = max - min;
+
+ l = (max + min) / 2;
+
+ if (delta == 0) {
+ // This is a gray, no chroma...
+ h = 0;
+ s = 0;
+ }
+ else {
+ if ( l < 0.5)
+ s = delta / ( max + min );
+ else
+ s = delta / ( 2 - max - min );
+
+ float delta_r, delta_g, delta_b;
+
+ delta_r = (( max - r ) / 6 ) / delta;
+ delta_g = (( max - g ) / 6 ) / delta;
+ delta_b = (( max - b ) / 6 ) / delta;
+
+ if ( r == max )
+ h = delta_b - delta_g;
+ else if ( g == max)
+ h = ( 1.0 / 3 ) + delta_r - delta_b;
+ else if ( b == max)
+ h = ( 2.0 / 3 ) + delta_g - delta_r;
+
+ if (h < 0) h += 1;
+ if (h > 1) h += 1;
+
+ }
+
+ *hue = h * 360;
+ *saturation = s;
+ *lightness = l;
+}
+
+float hue_value(float n1, float n2, float hue)
+{
+ if (hue > 360 )
+ hue = hue -360;
+ else if (hue < 0 )
+ hue = hue +360;
+ if (hue < 60 )
+ return n1 + (((n2 - n1) * hue) / 60);
+ else if (hue < 180 )
+ return n2;
+ else if (hue < 240 )
+ return n1 + (((n2 - n1) * (240 - hue)) / 60);
+ else return n1;
+}
+
+
+void hls_to_rgb(float h, float l, float s, quint8 * r, quint8 * g, quint8 * b)
+{
+ float m1, m2;
+
+ if (l <= 0.5 )
+ m2 = l * ( 1 + s );
+ else
+ m2 = l + s - l * s;
+
+ m1 = 2 * l - m2;
+
+ *r = (quint8)(hue_value(m1, m2, h + 120) * 255 + 0.5);
+ *g = (quint8)(hue_value(m1, m2, h) * 255 + 0.5);
+ *b = (quint8)(hue_value(m1, m2, h - 120) * 255 + 0.5);
+
+}
+
+void rgb_to_hls(quint8 r, quint8 g, quint8 b, int * h, int * l, int * s)
+{
+ float hue, saturation, lightness;
+
+ rgb_to_hls(r, g, b, &hue, &lightness, &saturation);
+ *h = (int)(hue + 0.5);
+ *l = (int)(lightness * 255 + 0.5);
+ *s = (int)(saturation * 255 + 0.5);
+}
+
+void hls_to_rgb(int h, int l, int s, quint8 * r, quint8 * g, quint8 * b)
+{
+ float hue = h;
+ float lightness = l / 255.0;
+ float saturation = s / 255.0;
+
+ hls_to_rgb(hue, lightness, saturation, r, g, b);
+}
+
+/*
+A Fast HSL-to-RGB Transform
+by Ken Fishkin
+from "Graphics Gems", Academic Press, 1990
+*/
+
+void RGBToHSL(float r, float g, float b, float *h, float *s, float *l)
+{
+ float v;
+ float m;
+ float vm;
+ float r2, g2, b2;
+
+ v = qMax(r,g);
+ v = qMax(v,b);
+ m = qMin(r,g);
+ m = qMin(m,b);
+
+ if ((*l = (m + v) / 2.0) <= 0.0) {
+ *h = UNDEFINED_HUE;
+ *s = 0;
+ return;
+ }
+ if ((*s = vm = v - m) > 0.0) {
+ *s /= (*l <= 0.5) ? (v + m ) :
+ (2.0 - v - m) ;
+ } else {
+ *h = UNDEFINED_HUE;
+ return;
+ }
+
+
+ r2 = (v - r) / vm;
+ g2 = (v - g) / vm;
+ b2 = (v - b) / vm;
+
+ if (r == v)
+ *h = (g == m ? 5.0 + b2 : 1.0 - g2);
+ else if (g == v)
+ *h = (b == m ? 1.0 + r2 : 3.0 - b2);
+ else
+ *h = (r == m ? 3.0 + g2 : 5.0 - r2);
+
+ *h *= 60;
+}
+
+void HSLToRGB(float h, float sl, float l, float *r, float *g, float *b)
+
+{
+ float v;
+
+ v = (l <= 0.5) ? (l * (1.0 + sl)) : (l + sl - l * sl);
+ if (v <= 0) {
+ *r = *g = *b = 0.0;
+ } else {
+ float m;
+ float sv;
+ int sextant;
+ float fract, vsf, mid1, mid2;
+
+ m = l + l - v;
+ sv = (v - m ) / v;
+ h /= 60.0;
+ sextant = static_cast<int>(h);
+ fract = h - sextant;
+ vsf = v * sv * fract;
+ mid1 = m + vsf;
+ mid2 = v - vsf;
+ switch (sextant) {
+ case 0: *r = v; *g = mid1; *b = m; break;
+ case 1: *r = mid2; *g = v; *b = m; break;
+ case 2: *r = m; *g = v; *b = mid1; break;
+ case 3: *r = m; *g = mid2; *b = v; break;
+ case 4: *r = mid1; *g = m; *b = v; break;
+ case 5: *r = v; *g = m; *b = mid2; break;
+ }
+ }
+}
+
Property changes on: trunk/libQtGTL/libQtGTL/ColorConversions_p.cpp
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/ColorConversions_p.h (from rev 525, trunk/libQtGTL/ColorConversions_p.h)
===================================================================
--- trunk/libQtGTL/libQtGTL/ColorConversions_p.h (rev 0)
+++ trunk/libQtGTL/libQtGTL/ColorConversions_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2005 Boudewijn Rempt <boud@xxxxxxxxxxx>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _KIS_CONVERSIONS_H_
+#define _KIS_CONVERSIONS_H_
+
+#include <qglobal.h>
+
+/**
+ * A number of often-used conversions between color models
+ */
+
+// 8-bit integer versions. RGBSL are 0-255, H is 0-360.
+ void rgb_to_hsv(int R, int G, int B, int *H, int *S, int *V);
+ void hsv_to_rgb(int H, int S, int V, int *R, int *G, int *B);
+
+// Floating point versions. RGBSL are 0-1, H is 0-360.
+ void RGBToHSV(float r, float g, float b, float *h, float *s, float *v);
+ void HSVToRGB(float h, float s, float v, float *r, float *g, float *b);
+
+ void RGBToHSL(float r, float g, float b, float *h, float *s, float *l);
+ void HSLToRGB(float h, float sl, float l, float *r, float *g, float *b);
+
+ void rgb_to_hls(quint8 r, quint8 g, quint8 b, float * h, float * l, float * s);
+
+ float hue_value(float n1, float n2, float hue);
+
+ void hls_to_rgb(float h, float l, float s, quint8 * r, quint8 * g, quint8 * b);
+
+ void rgb_to_hls(quint8 r, quint8 g, quint8 b, int * h, int * l, int * s);
+ void hls_to_rgb(int h, int l, int s, quint8 * r, quint8 * g, quint8 * b);
+
+#endif // _KIS_CONVERSIONS_H_
+
Property changes on: trunk/libQtGTL/libQtGTL/ColorConversions_p.h
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/ParametersWidget.cpp (from rev 525, trunk/libQtGTL/ParametersWidget.cpp)
===================================================================
--- trunk/libQtGTL/libQtGTL/ParametersWidget.cpp (rev 0)
+++ trunk/libQtGTL/libQtGTL/ParametersWidget.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "ParametersWidget.h"
+
+
+#include "ParametersWidget_p.h"
+
+using namespace QtGTL;
+
+ParametersWidget::ParametersWidget( QWidget* _parent ) : QWidget( _parent ), d(new Private)
+{
+ d->kernel = 0;
+ d->self = this;
+}
+
+ParametersWidget::~ParametersWidget()
+{
+ delete d;
+}
+
+void ParametersWidget::setKernel( OpenShiva::Kernel* _kernel )
+{
+ d->kernel = _kernel;
+ d->regenerateWidget();
+}
Property changes on: trunk/libQtGTL/libQtGTL/ParametersWidget.cpp
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/ParametersWidget.h (from rev 525, trunk/libQtGTL/ParametersWidget.h)
===================================================================
--- trunk/libQtGTL/libQtGTL/ParametersWidget.h (rev 0)
+++ trunk/libQtGTL/libQtGTL/ParametersWidget.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _QTGTL_PARAMETERS_WIDGET_H_
+#define _QTGTL_PARAMETERS_WIDGET_H_
+
+#include <QWidget>
+
+namespace OpenShiva {
+ class Kernel;
+};
+
+namespace QtGTL {
+ class ParametersWidget : public QWidget {
+ public:
+ ParametersWidget( QWidget* );
+ ~ParametersWidget();
+ public:
+ void setKernel( OpenShiva::Kernel* _kernel );
+ private:
+ struct Private;
+ Private* const d;
+ };
+}
+
+#endif
Property changes on: trunk/libQtGTL/libQtGTL/ParametersWidget.h
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/ParametersWidget_p.cpp (from rev 525, trunk/libQtGTL/ParametersWidget_p.cpp)
===================================================================
--- trunk/libQtGTL/libQtGTL/ParametersWidget_p.cpp (rev 0)
+++ trunk/libQtGTL/libQtGTL/ParametersWidget_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "ParametersWidget_p.h"
+
+#include <OpenShiva/Kernel.h>
+#include <OpenShiva/KernelMetadata.h>
+#include <GTLCore/Value.h>
+#include <GTLCore/Metadata/Entry.h>
+#include <GTLCore/Metadata/Group.h>
+#include <GTLCore/Metadata/ParameterEntry.h>
+
+#include <QDoubleSpinBox>
+#include <QGridLayout>
+#include <QLabel>
+#include <QTabWidget>
+#include <QSlider>
+
+#include "SpinBoxSliderConnector_p.h"
+
+using namespace QtGTL;
+
+void ParametersWidget::Private::regenerateWidget()
+{
+ delete currentWidget;
+
+ if( kernel->metadata() and kernel->metadata()->parameters() )
+ {
+ const GTLCore::Metadata::Group* parameters = kernel->metadata()->parameters();
+ // Is tabWidget ?
+ QTabWidget* tabWidget = 0;
+ QWidget* widget = new QWidget();
+ foreach( const GTLCore::Metadata::Entry* entry, parameters->entries() )
+ {
+ if( entry->asGroup() and not entry->asParameterEntry() )
+ {
+ if(not tabWidget )
+ {
+ tabWidget = new QTabWidget( self );
+ widget = new QWidget( );
+ tabWidget->addTab( widget, kernel->name().c_str() );
+ }
+ break;
+ }
+ }
+ // Set the currentWidget
+ if( tabWidget )
+ {
+ currentWidget = tabWidget;
+ } else {
+ currentWidget = widget;
+ }
+
+ // Create widgets
+ QGridLayout* widgetGridLayout = new QGridLayout(widget);
+ int posInGrid = 0;
+ foreach( const GTLCore::Metadata::Entry* entry, parameters->entries() )
+ {
+ if( const GTLCore::Metadata::ParameterEntry* pe = entry->asParameterEntry() )
+ {
+ createParameterEntryWidget( widget, widgetGridLayout, posInGrid, pe );
+ ++posInGrid;
+ } else if( const GTLCore::Metadata::Group* gr = entry->asGroup() )
+ {
+ Q_ASSERT( tabWidget );
+ QWidget* groupWidget = new QWidget( );
+ QGridLayout* groupWidgetGridLayout = new QGridLayout(groupWidget);
+ int groupPosInGrid = 0;
+ foreach( const GTLCore::Metadata::Entry* groupEntry, gr->entries() )
+ {
+ if( const GTLCore::Metadata::ParameterEntry* gpe = entry->asParameterEntry() )
+ {
+ createParameterEntryWidget( groupWidget, groupWidgetGridLayout, groupPosInGrid, gpe );
+ ++groupPosInGrid;
+ }
+ }
+ tabWidget->addTab( groupWidget, gr->name().c_str() );
+ }
+ }
+
+ } else {
+ currentWidget = new QLabel( QObject::tr( "No configuration" ), self );
+ }
+
+}
+
+void ParametersWidget::Private::createParameterEntryWidget( QWidget* _parent, QGridLayout* _gridLayout, int _layoutIndex, const GTLCore::Metadata::ParameterEntry* _parameterEntry )
+{
+ // Label
+ QLabel* label = new QLabel( _parameterEntry->name().c_str(), _parent);
+ _gridLayout->addWidget(label, _layoutIndex, 0, 1, 1);
+ switch( _parameterEntry->widgetType() )
+ {
+ case GTLCore::Metadata::ParameterEntry::IntegerWidget:
+ {
+ // Integer spinbox
+ QSpinBox* spinBox = new QSpinBox(_parent);
+ _gridLayout->addWidget(spinBox, _layoutIndex, 1, 1, 1);
+
+ // Slider
+ QSlider* horizontalSlider = new QSlider(_parent);
+ horizontalSlider->setOrientation(Qt::Horizontal);
+ _gridLayout->addWidget(horizontalSlider, _layoutIndex, 2, 1, 1);
+
+ connect( spinBox, SIGNAL(valueChanged(int)), horizontalSlider, SLOT(setValue(int)));
+ connect( horizontalSlider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
+
+ int min = _parameterEntry->minimumValue().asInt32();
+ int max = _parameterEntry->maximumValue().asInt32();
+ int val = _parameterEntry->defaultValue().asInt32();
+ spinBox->setMinimum( min );
+ spinBox->setMaximum( max );
+ spinBox->setValue( val );
+ horizontalSlider->setMinimum( min );
+ horizontalSlider->setMaximum( max );
+ horizontalSlider->setValue( val );
+ }
+ break;
+ case GTLCore::Metadata::ParameterEntry::FloatWidget:
+ {
+
+ // Double spinbox
+ QDoubleSpinBox* doubleSpinBox = new QDoubleSpinBox(_parent);
+ _gridLayout->addWidget(doubleSpinBox, _layoutIndex, 1, 1, 1);
+
+ // Slider
+ QSlider* horizontalSlider = new QSlider(_parent);
+ horizontalSlider->setOrientation(Qt::Horizontal);
+ _gridLayout->addWidget(horizontalSlider, _layoutIndex, 2, 1, 1);
+ horizontalSlider->setMinimum( 0 );
+ horizontalSlider->setMaximum( 1000 );
+
+ SpinBoxSliderConnector* connector = new SpinBoxSliderConnector( _parent, doubleSpinBox, horizontalSlider);
+ connect( connector, SIGNAL(valueChanged(double)), this, SLOT(updateKernelParameters()));
+
+ // Set parameters
+ doubleSpinBox->setMinimum( _parameterEntry->minimumValue().asFloat() );
+ doubleSpinBox->setMaximum( _parameterEntry->maximumValue().asFloat() );
+ doubleSpinBox->setValue( _parameterEntry->defaultValue().asFloat() );
+ }
+ break;
+ case GTLCore::Metadata::ParameterEntry::CurveWidget:
+
+ break;
+ case GTLCore::Metadata::ParameterEntry::RgbColorWidget:
+
+ break;
+ }
+}
+
+void ParametersWidget::Private::updateKernelParameters()
+{
+}
+
+
+#include "ParametersWidget_p.moc"
Property changes on: trunk/libQtGTL/libQtGTL/ParametersWidget_p.cpp
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/ParametersWidget_p.h (from rev 525, trunk/libQtGTL/ParametersWidget_p.h)
===================================================================
--- trunk/libQtGTL/libQtGTL/ParametersWidget_p.h (rev 0)
+++ trunk/libQtGTL/libQtGTL/ParametersWidget_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "ParametersWidget.h"
+
+#ifndef _QTGTL_PARAMETERS_WIDGET_P_H_
+#define _QTGTL_PARAMETERS_WIDGET_P_H_
+
+class QGridLayout;
+
+namespace GTLCore {
+ namespace Metadata {
+ class ParameterEntry;
+ }
+}
+
+namespace QtGTL {
+ class ParametersWidget::Private : public QObject {
+ Q_OBJECT
+ public:
+ Private() : kernel(0), self(0), currentWidget(0) {}
+ OpenShiva::Kernel* kernel;
+ QWidget* self;
+ QWidget* currentWidget;
+ // Functions
+ void regenerateWidget();
+ private slots:
+ void updateKernelParameters();
+ private:
+ void createParameterEntryWidget( QWidget* _parent, QGridLayout* _gridLayout, int _layoutIndex, const GTLCore::Metadata::ParameterEntry* _parameterEntry );
+ };
+}
+
+#endif
Property changes on: trunk/libQtGTL/libQtGTL/ParametersWidget_p.h
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/RgbaDialog_p.cpp (from rev 525, trunk/libQtGTL/RgbaDialog_p.cpp)
===================================================================
--- trunk/libQtGTL/libQtGTL/RgbaDialog_p.cpp (rev 0)
+++ trunk/libQtGTL/libQtGTL/RgbaDialog_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "RgbaDialog_p.h"
+
+#include "SpinBoxSliderConnector_p.h"
+
+#include "ui_UiRgbaDialog.h"
+
+using namespace QtGTL;
+
+RgbaDialog::RgbaDialog( QWidget* _widget ) : QDialog(_widget), m_rgbaDialog( new Ui_RgbaDialog )
+{
+ m_rgbaDialog->setupUi( this );
+
+ m_connectors[0] = new SpinBoxSliderConnector( this, m_rgbaDialog->doubleSpinBoxRed, m_rgbaDialog->sliderRed );
+ connect( m_connectors[0], SIGNAL(valueChanged(double)), SLOT(spinBoxesValuesChanged()));
+ m_connectors[1] = new SpinBoxSliderConnector( this, m_rgbaDialog->doubleSpinBoxGreen, m_rgbaDialog->sliderGreen );
+ connect( m_connectors[1], SIGNAL(valueChanged(double)), SLOT(spinBoxesValuesChanged()));
+ m_connectors[2] = new SpinBoxSliderConnector( this, m_rgbaDialog->doubleSpinBoxBlue, m_rgbaDialog->sliderBlue );
+ connect( m_connectors[2], SIGNAL(valueChanged(double)), SLOT(spinBoxesValuesChanged()));
+}
+
+RgbaDialog::~RgbaDialog()
+{
+}
+
+QColor RgbaDialog::color()
+{
+ QColor c = m_rgbaDialog->triangleSelector->color();
+ c.setAlpha( m_rgbaDialog->doubleSpinBoxAlpha->value() * 255 );
+ return c;
+}
+
+void RgbaDialog::triangleColorChanged( const QColor& c)
+{
+ m_connectors[0]->setValue( c.red() / 255.0 );
+ m_connectors[1]->setValue( c.green() / 255.0 );
+ m_connectors[2]->setValue( c.blue() / 255.0 );
+}
+void RgbaDialog::spinBoxesValuesChanged()
+{
+
+}
Property changes on: trunk/libQtGTL/libQtGTL/RgbaDialog_p.cpp
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/RgbaDialog_p.h (from rev 525, trunk/libQtGTL/RgbaDialog_p.h)
===================================================================
--- trunk/libQtGTL/libQtGTL/RgbaDialog_p.h (rev 0)
+++ trunk/libQtGTL/libQtGTL/RgbaDialog_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _RGBA_DIALOG_H_
+#define _RGBA_DIALOG_H_
+
+#include <QDialog>
+
+class Ui_RgbaDialog;
+
+namespace QtGTL {
+
+ class SpinBoxSliderConnector;
+
+ class RgbaDialog : public QDialog {
+ public:
+ RgbaDialog( QWidget* );
+ ~RgbaDialog();
+ QColor color();
+ private slots:
+ void triangleColorChanged( const QColor& );
+ void spinBoxesValuesChanged();
+ private:
+ Ui_RgbaDialog* m_rgbaDialog;
+ SpinBoxSliderConnector* m_connectors[3];
+ };
+
+}
+#endif
Property changes on: trunk/libQtGTL/libQtGTL/RgbaDialog_p.h
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.cpp (from rev 525, trunk/libQtGTL/SpinBoxSliderConnector_p.cpp)
===================================================================
--- trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.cpp (rev 0)
+++ trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * either version 2, or (at your option) any later version of the License.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "SpinBoxSliderConnector_p.h"
+
+using namespace QtGTL;
+
+#include <QDoubleSpinBox>
+#include <QSlider>
+
+SpinBoxSliderConnector::SpinBoxSliderConnector( QObject* _parent, QDoubleSpinBox* _spinBox, QSlider* _slider ) : QObject( _parent ), m_spinBox( _spinBox ), m_slider( _slider )
+{
+ connect( m_spinBox, SIGNAL(valueChanged( double )), SLOT(spinBoxValueChanged( double ) ) );
+ connect( m_slider, SIGNAL(valueChanged( int )), SLOT(sliderValueChanged( int ) ) );
+}
+
+SpinBoxSliderConnector::~SpinBoxSliderConnector()
+{
+}
+
+void SpinBoxSliderConnector::setValue( double _value )
+{
+ m_spinBox->setValue( _value );
+}
+
+void SpinBoxSliderConnector::spinBoxValueChanged( double _value )
+{
+ bool v = m_slider->blockSignals(true);
+ m_slider->setValue( int(_value * ( m_slider->maximum() - m_slider->minimum() ) / ( m_spinBox->maximum() - m_spinBox->minimum() ) ) );
+ m_slider->blockSignals(v);
+ emit( valueChanged( m_spinBox->value() ) );
+}
+
+void SpinBoxSliderConnector::sliderValueChanged( int _value )
+{
+ bool v = m_spinBox->blockSignals(true);
+ m_spinBox->setValue( _value * ( m_spinBox->maximum() - m_spinBox->minimum() ) / ( m_slider->maximum() - m_slider->minimum() ) );
+ m_spinBox->blockSignals(v);
+ emit( valueChanged( m_spinBox->value() ) );
+}
+
+#include "SpinBoxSliderConnector_p.moc"
Property changes on: trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.cpp
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.h (from rev 525, trunk/libQtGTL/SpinBoxSliderConnector_p.h)
===================================================================
--- trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.h (rev 0)
+++ trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _SPINBOX_SLIDER_CONNECTOR_HPP_
+#define _SPINBOX_SLIDER_CONNECTOR_HPP_
+
+#include <QObject>
+
+class QDoubleSpinBox;
+class QSlider;
+
+namespace QtGTL {
+
+ class SpinBoxSliderConnector : public QObject {
+ Q_OBJECT
+ public:
+ SpinBoxSliderConnector( QObject* _parent, QDoubleSpinBox* _spinBox, QSlider* _slider );
+ ~SpinBoxSliderConnector();
+ void setValue( double _value );
+ private slots:
+ void spinBoxValueChanged( double _value );
+ void sliderValueChanged( int _value );
+ signals:
+ void valueChanged( double _value );
+ private:
+ QDoubleSpinBox* m_spinBox;
+ QSlider* m_slider;
+ };
+
+}
+
+#endif
Property changes on: trunk/libQtGTL/libQtGTL/SpinBoxSliderConnector_p.h
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.cpp (from rev 525, trunk/libQtGTL/TriangleColorSelector_p.cpp)
===================================================================
--- trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.cpp (rev 0)
+++ trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.cpp 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,375 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "TriangleColorSelector_p.h"
+#include <math.h>
+
+#include <QMouseEvent>
+#include <QPainter>
+#include <QPixmap>
+#include "ColorConversions_p.h"
+
+enum CurrentHandle {
+ NoHandle,
+ HueHandle,
+ ValueSaturationHandle };
+
+struct TriangleColorSelector::Private {
+ QPixmap wheelPixmap;
+ QPixmap trianglePixmap;
+ int hue;
+ int saturation;
+ int value;
+ int sizeColorSelector;
+ qreal centerColorSelector;
+ qreal wheelWidthProportion;
+ qreal wheelWidth;
+ qreal wheelNormExt;
+ qreal wheelNormInt;
+ qreal wheelInnerRadius;
+ qreal triangleRadius;
+ qreal triangleLength;
+ qreal triangleHeight;
+ qreal triangleBottom;
+ qreal triangleTop;
+ qreal normExt;
+ qreal normInt;
+ bool updateAllowed;
+ CurrentHandle handle;
+ qreal triangleHandleSize;
+ bool invalidTriangle;
+};
+
+TriangleColorSelector::TriangleColorSelector(QWidget* parent) : QWidget(parent), d(new Private)
+{
+ setMinimumHeight( 100 );
+ setMinimumWidth( 100 );
+ d->hue = 0;
+ d->saturation = 0;
+ d->value = 0;
+ d->updateAllowed = true;
+ setMouseTracking( true );
+ updateTriangleCircleParameters();
+ d->invalidTriangle = true;
+}
+
+TriangleColorSelector::~TriangleColorSelector()
+{
+ delete d;
+}
+
+void TriangleColorSelector::updateTriangleCircleParameters()
+{
+ d->sizeColorSelector = qMin(width(), height());
+ d->centerColorSelector = 0.5 * d->sizeColorSelector;
+ d->wheelWidthProportion = 0.3;
+ d->wheelWidth = d->centerColorSelector * d->wheelWidthProportion;
+ d->wheelNormExt = qAbs( d->centerColorSelector );
+ d->wheelNormInt = qAbs( d->centerColorSelector * (1.0 - d->wheelWidthProportion));
+ d->wheelInnerRadius = d->centerColorSelector * (1.0 - d->wheelWidthProportion);
+ d->triangleRadius = d->wheelInnerRadius * 0.9;
+ d->triangleLength = 3.0 / sqrt(3.0) * d->triangleRadius;
+ d->triangleHeight = d->triangleLength * sqrt(3.0) * 0.5;
+ d->triangleTop = 0.5 * d->sizeColorSelector - d->triangleRadius;
+ d->triangleBottom = d->triangleHeight + d->triangleTop;
+ d->triangleHandleSize = 10.0;
+}
+
+void TriangleColorSelector::paintEvent( QPaintEvent * event )
+{
+ if( d->invalidTriangle )
+ {
+ generateTriangle();
+ }
+ Q_UNUSED(event);
+ QPainter p(this);
+ p.setRenderHint(QPainter::SmoothPixmapTransform);
+ p.setRenderHint(QPainter::Antialiasing);
+ QPointF pos(d->centerColorSelector, d->centerColorSelector);
+ p.translate(QPointF( 0.5*width(), 0.5*height() ) );
+ // Draw the wheel
+ p.drawPixmap( -pos, d->wheelPixmap );
+ // Draw the triangle
+ p.save();
+ p.rotate( hue() + 150 );
+ p.drawPixmap( -pos , d->trianglePixmap );
+ // Draw selectors
+ p.restore();
+ // Draw value,saturation selector
+ // Compute coordinates
+ {
+ qreal vs_selector_ypos_ = value() / 255.0;
+ qreal ls_ = (vs_selector_ypos_) * d->triangleLength; // length of the saturation on the triangle
+ qreal vs_selector_xpos_ = ls_ * (saturation() / 255.0 - 0.5);
+ // Draw it
+ p.save();
+ p.setPen( QPen( Qt::white, 1.0) );
+ p.setBrush( color() );
+ p.rotate( hue() + 150 );
+ p.drawEllipse( QRectF( -d->triangleHandleSize*0.5 + vs_selector_xpos_,
+ -d->triangleHandleSize*0.5 - (d->centerColorSelector - d->triangleTop) + vs_selector_ypos_ * d->triangleHeight,
+ d->triangleHandleSize , d->triangleHandleSize ));
+ }
+ p.restore();
+ // Draw Hue selector
+ p.save();
+ p.setPen( QPen( Qt::white, 1.0) );
+ p.rotate( hue() - 90 );
+ qreal hueSelectorWidth_ = 0.8;
+ qreal hueSelectorOffset_ = 0.5 *( 1.0 - hueSelectorWidth_) * d->wheelWidth;
+ qreal hueSelectorSize_ = 0.8 * d->wheelWidth;
+ p.drawRect( QRectF( -1.5, -d->centerColorSelector + hueSelectorOffset_, 3.0, hueSelectorSize_ ));
+ p.restore();
+ p.end();
+}
+
+int TriangleColorSelector::hue() const
+{
+ return d->hue;
+}
+
+void TriangleColorSelector::setHue(int h)
+{
+ h = qBound(0, h, 360);
+ d->hue = h;
+ tellColorChanged();
+ d->invalidTriangle = true;
+ update();
+}
+
+int TriangleColorSelector::value() const
+{
+ return d->value;
+}
+
+void TriangleColorSelector::setValue(int v)
+{
+ v = qBound(0, v, 255);
+ d->value = v;
+ tellColorChanged();
+ d->invalidTriangle = true;
+ update();
+}
+
+int TriangleColorSelector::saturation() const
+{
+ return d->saturation;
+}
+
+void TriangleColorSelector::setSaturation(int s)
+{
+ s = qBound(0, s, 255);
+ d->saturation = s;
+ tellColorChanged();
+ d->invalidTriangle = true;
+ update();
+}
+
+void TriangleColorSelector::setHSV(int h, int s, int v)
+{
+ h = qBound(0, h, 360);
+ s = qBound(0, s, 255);
+ v = qBound(0, v, 255);
+ d->hue = h;
+ d->value = v;
+ d->saturation = s;
+ tellColorChanged();
+ d->invalidTriangle = true;
+ update();
+}
+
+QColor TriangleColorSelector::color() const
+{
+ int r,g,b;
+ hsv_to_rgb( d->hue, d->saturation, d->value, &r, &g, &b);
+ return QColor(r,g,b);
+}
+
+void TriangleColorSelector::setQColor(const QColor& c)
+{
+ if(d->updateAllowed)
+ {
+ int hue;
+ rgb_to_hsv( c.red(), c.green(), c.blue(), &hue, &d->saturation, &d->value);
+ if( hue >= 0 && hue <= 360)
+ d->hue = hue;
+ d->invalidTriangle = true;
+ update();
+ }
+}
+
+void TriangleColorSelector::resizeEvent( QResizeEvent * event )
+{
+ QWidget::resizeEvent( event );
+ updateTriangleCircleParameters();
+ generateWheel();
+ d->invalidTriangle = true;
+}
+
+inline qreal pow2(qreal v)
+{
+ return v*v;
+}
+
+void TriangleColorSelector::tellColorChanged()
+{
+ d->updateAllowed = false;
+ emit(colorChanged(color()));
+ d->updateAllowed = true;
+}
+
+void TriangleColorSelector::generateTriangle()
+{
+ QImage img(d->sizeColorSelector, d->sizeColorSelector, QImage::Format_ARGB32_Premultiplied);
+ // Length of triangle
+ int hue_ = hue();
+
+ for(int y = 0; y < d->sizeColorSelector; y++)
+ {
+ qreal ynormalize = ( d->triangleTop - y ) / ( d->triangleTop - d->triangleBottom );
+ qreal v = 255 * ynormalize;
+ qreal ls_ = (ynormalize) * d->triangleLength;
+ qreal startx_ = d->centerColorSelector - 0.5 * ls_;
+ for(int x = 0; x < d->sizeColorSelector; x++)
+ {
+ qreal s = 255 * (x - startx_) / ls_;
+ if(v < -1.0 || v > 256.0 || s < -1.0 || s > 256.0 )
+ {
+ img.setPixel(x,y, qRgba(0,0,0,0));
+ } else {
+ qreal va = 1.0, sa = 1.0;
+ if( v < 0.0) { va = 1.0 + v; v = 0; }
+ else if( v > 255.0 ) { va = 256.0 - v; v = 255; }
+ if( s < 0.0) { sa = 1.0 + s; s = 0; }
+ else if( s > 255.0 ) { sa = 256.0 - s; s = 255; }
+ int r,g,b;
+ hsv_to_rgb(hue_, (int)s, (int)v, &r, &g, &b);
+ qreal coef = va * sa;
+ if( coef < 0.999)
+ {
+ img.setPixel(x,y, qRgba( (int)(r * coef), (int)(g * coef), (int)(b * coef), (int)(255 * coef)));
+ } else {
+ img.setPixel(x,y, qRgba(r, g, b, 255 ));
+ }
+ }
+ }
+ }
+
+ d->trianglePixmap = QPixmap::fromImage(img);
+ d->invalidTriangle = false;
+}
+
+void TriangleColorSelector::generateWheel()
+{
+ QImage img(d->sizeColorSelector, d->sizeColorSelector, QImage::Format_ARGB32_Premultiplied);
+ for(int y = 0; y < d->sizeColorSelector; y++)
+ {
+ qreal yc = y - d->centerColorSelector;
+ qreal y2 = pow2( yc );
+ for(int x = 0; x < d->sizeColorSelector; x++)
+ {
+ qreal xc = x - d->centerColorSelector;
+ qreal norm = sqrt(pow2( xc ) + y2);
+ if( norm <= d->wheelNormExt + 1.0 && norm >= d->wheelNormInt - 1.0 )
+ {
+ qreal acoef = 1.0;
+ if(norm > d->wheelNormExt ) acoef = (1.0 + d->wheelNormExt - norm);
+ else if(norm < d->wheelNormInt ) acoef = (1.0 - d->wheelNormInt + norm);
+ qreal angle = atan2(yc, xc);
+ int h = (int)((180 * angle / M_PI) + 180);
+ int r,g,b;
+ hsv_to_rgb(h, 255, 255, &r, &g, &b);
+ if( acoef < 0.999)
+ {
+ img.setPixel(x,y, qRgba( (int)(r * acoef), (int)(g * acoef), (int)(b * acoef), (int)(255 * acoef)));
+ } else {
+ img.setPixel(x,y, qRgba(r, g, b, 255 ));
+ }
+ } else {
+ img.setPixel(x,y, qRgba(0,0,0,0));
+ }
+ }
+ }
+ d->wheelPixmap = QPixmap::fromImage(img);
+}
+
+void TriangleColorSelector::mouseReleaseEvent( QMouseEvent * event )
+{
+ if(event->button() == Qt::LeftButton)
+ {
+ selectColorAt( event->x(), event->y());
+ d->handle = NoHandle;
+ }
+ QWidget::mouseReleaseEvent( event );
+}
+
+void TriangleColorSelector::mousePressEvent( QMouseEvent * event )
+{
+ if(event->button() == Qt::LeftButton)
+ {
+ d->handle = NoHandle;
+ selectColorAt( event->x(), event->y());
+ }
+ QWidget::mousePressEvent( event );
+}
+
+void TriangleColorSelector::mouseMoveEvent( QMouseEvent * event )
+{
+ if(event->buttons() & Qt::LeftButton)
+ {
+ selectColorAt( event->x(), event->y(), false );
+ }
+ QWidget::mouseMoveEvent( event);
+}
+
+void TriangleColorSelector::selectColorAt(int _x, int _y, bool checkInWheel)
+{
+ Q_UNUSED( checkInWheel );
+ qreal x = _x - 0.5*width();
+ qreal y = _y - 0.5*height();
+ // Check if the click is inside the wheel
+ qreal norm = sqrt( x * x + y * y);
+ if ( ( (norm < d->wheelNormExt) && (norm > d->wheelNormInt) && d->handle == NoHandle )
+ || d->handle == HueHandle ) {
+ d->handle = HueHandle;
+ setHue( (int)(atan2(y, x) * 180 / M_PI ) + 180);
+ update();
+ }
+ else {
+ // Compute the s and v value, if they are in range, use them
+ qreal rotation = -(hue() + 150) * M_PI / 180;
+ qreal cr = cos(rotation);
+ qreal sr = sin(rotation);
+ qreal x1 = x * cr - y * sr; // <- now x1 gives the saturation
+ qreal y1 = x * sr + y * cr; // <- now y1 gives the value
+ y1 += d->wheelNormExt;
+ qreal ynormalize = (d->triangleTop - y1 ) / ( d->triangleTop - d->triangleBottom );
+ if( (ynormalize >= 0.0 && ynormalize <= 1.0 ) || d->handle == ValueSaturationHandle)
+ {
+ d->handle = ValueSaturationHandle;
+ qreal ls_ = (ynormalize) * d->triangleLength; // length of the saturation on the triangle
+ qreal sat = ( x1 / ls_ + 0.5) ;
+ if((sat >= 0.0 && sat <= 1.0) || d->handle == ValueSaturationHandle)
+ {
+ setHSV( d->hue, sat * 255, ynormalize * 255);
+ }
+ }
+ update();
+ }
+}
+
+#include "TriangleColorSelector_p.moc"
Property changes on: trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.cpp
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.h (from rev 525, trunk/libQtGTL/TriangleColorSelector_p.h)
===================================================================
--- trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.h (rev 0)
+++ trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.h 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2008 Cyrille Berger <cberger@xxxxxxxxxxx>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _TRIANGLE_COLOR_SELECTOR_H_
+#define _TRIANGLE_COLOR_SELECTOR_H_
+
+#include <QWidget>
+
+class TriangleColorSelector : public QWidget {
+ Q_OBJECT
+ public:
+ TriangleColorSelector(QWidget* parent);
+ ~TriangleColorSelector();
+ protected: // events
+ void paintEvent( QPaintEvent * event );
+ void resizeEvent( QResizeEvent * event );
+ void mouseReleaseEvent( QMouseEvent * event );
+ void mousePressEvent( QMouseEvent * event );
+ void mouseMoveEvent( QMouseEvent * event );
+ public:
+ int hue() const;
+ int value() const;
+ int saturation() const;
+ QColor color() const;
+ public slots:
+ void setHue(int h);
+ void setValue(int v);
+ void setSaturation(int s);
+ void setHSV(int h, int s, int v);
+ void setQColor(const QColor& );
+ signals:
+ void colorChanged(const QColor& );
+ private:
+ void tellColorChanged();
+ void generateTriangle();
+ void generateWheel();
+ void updateTriangleCircleParameters();
+ void selectColorAt(int x, int y, bool checkInWheel = true);
+ private:
+ struct Private;
+ Private* const d;
+};
+
+#endif
Property changes on: trunk/libQtGTL/libQtGTL/TriangleColorSelector_p.h
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Name: svn:eol-style
+ native
Copied: trunk/libQtGTL/libQtGTL/UiRgbaDialog.ui (from rev 525, trunk/libQtGTL/UiRgbaDialog.ui)
===================================================================
--- trunk/libQtGTL/libQtGTL/UiRgbaDialog.ui (rev 0)
+++ trunk/libQtGTL/libQtGTL/UiRgbaDialog.ui 2008-12-07 22:04:14 UTC (rev 526)
@@ -0,0 +1,170 @@
+<ui version="4.0" >
+ <class>RgbaDialog</class>
+ <widget class="QDialog" name="RgbaDialog" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>486</width>
+ <height>318</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Dialog</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout" >
+ <item>
+ <widget class="TriangleColorSelector" native="1" name="triangleSelector" >
+ <property name="minimumSize" >
+ <size>
+ <width>300</width>
+ <height>300</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout" >
+ <item>
+ <layout class="QGridLayout" name="gridLayout" >
+ <item row="1" column="0" colspan="2" >
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>Red:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="3" >
+ <widget class="QSlider" name="sliderRed" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2" >
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>Green:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1" colspan="2" >
+ <widget class="QDoubleSpinBox" name="doubleSpinBoxGreen" />
+ </item>
+ <item row="4" column="0" colspan="3" >
+ <widget class="QSlider" name="sliderGreen" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" >
+ <widget class="QLabel" name="label_3" >
+ <property name="text" >
+ <string>Blue:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1" colspan="2" >
+ <widget class="QDoubleSpinBox" name="doubleSpinBoxBlue" />
+ </item>
+ <item row="6" column="0" colspan="3" >
+ <widget class="QSlider" name="sliderBlue" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0" >
+ <widget class="QLabel" name="label_4" >
+ <property name="text" >
+ <string>Alpha:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1" colspan="2" >
+ <widget class="QDoubleSpinBox" name="doubleSpinBoxAlpha" />
+ </item>
+ <item row="8" column="0" colspan="3" >
+ <widget class="QSlider" name="sliderAlpha" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="2" >
+ <widget class="QDoubleSpinBox" name="doubleSpinBoxRed" />
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons" >
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>TriangleColorSelector</class>
+ <extends>QWidget</extends>
+ <header>TriangleColorSelector_p.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>RgbaDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>RgbaDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
Property changes on: trunk/libQtGTL/libQtGTL/UiRgbaDialog.ui
___________________________________________________________________
Name: svn:mergeinfo
+