Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Sauvage
CGoGN
Commits
b8525572
Commit
b8525572
authored
May 23, 2012
by
Sylvain Thery
Browse files
add easy color modification interface
parent
7f59e0ce
Changes
2
Hide whitespace changes
Inline
Side-by-side
include/Utils/Qt/qtcolorschooser.h
0 → 100644
View file @
b8525572
/*******************************************************************************
* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps *
* version 0.1 *
* Copyright (C) 2009-2012, IGG Team, LSIIT, University of Strasbourg *
* *
* 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.1 of the License, or (at your *
* option) any later version. *
* *
* 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; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
* *
* Web site: http://cgogn.unistra.fr/ *
* Contact information: cgogn@unistra.fr *
* *
*******************************************************************************/
#ifndef __QT_COLORS_CHOOSER_
#define __QT_COLORS_CHOOSER_
#include
"Utils/Qt/qtSimple.h"
#include
<QColorDialog>
#include
<QListWidget>
#include
"Utils/Qt/qtpopup.h"
namespace
CGoGN
{
namespace
Utils
{
namespace
QT
{
//forward definition
class
SimpleQT
;
/**
* Class that allow to interactively & easily modify application color:
* Example of use
* cc = new Utils::QT::ColorsChooser(&sqt)
* cc->addColor(backgroundColor);
* cc->addColor(lineColor);
* cc->show();
* Colors are automatically updated and
*
* Closing the window make a hide() (no destruction)
* To destroy: call delete in exit_cb
*/
class
ColorsChooser
:
public
QtPopUp
{
Q_OBJECT
protected:
std
::
vector
<
Geom
::
Vec3f
*>
m_colors
;
std
::
vector
<
std
::
string
>
m_names
;
int
m_current
;
QListWidget
*
m_list
;
QColorDialog
*
m_diag
;
SimpleQT
*
m_interf
;
/**
* Update callback, on color has changed (optional)
* overload with what you want (glClearColor, setColor of shader ...)
* Called only if interface ptr has been given
* Do not forget to cast interf in the type of your interface !!
*/
virtual
void
updateCallBack
(
SimpleQT
*
interf
)
{}
public:
/**
* constructor
* @param interf a ptr to the SimpltQT interf (if given the updateCallback and updateGL() are called
*/
ColorsChooser
(
SimpleQT
*
interf
=
NULL
);
/**
* add a color ptr the color chooser
* @param ptr the ptr to the color
* @param name display name in interface
*/
unsigned
int
addColor
(
Geom
::
Vec3f
*
ptr
,
const
std
::
string
&
name
);
protected
slots
:
void
select_color
(
int
x
);
void
change_color
(
const
QColor
&
col
);
};
}
}
}
#endif
src/Utils/Qt/qtcolorschooser.cpp
0 → 100644
View file @
b8525572
/*******************************************************************************
* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps *
* version 0.1 *
* Copyright (C) 2009-2012, IGG Team, LSIIT, University of Strasbourg *
* *
* 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.1 of the License, or (at your *
* option) any later version. *
* *
* 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; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
* *
* Web site: http://cgogn.unistra.fr/ *
* Contact information: cgogn@unistra.fr *
* *
*******************************************************************************/
#include
"Utils/Qt/qtcolorschooser.h"
#include
"Utils/Qt/qtSimple.h"
namespace
CGoGN
{
namespace
Utils
{
namespace
QT
{
ColorsChooser
::
ColorsChooser
(
SimpleQT
*
interf
)
:
m_interf
(
interf
)
{
m_list
=
new
QListWidget
();
m_diag
=
new
QColorDialog
();
m_diag
->
setOption
(
QColorDialog
::
NoButtons
);
addWidget
(
m_list
,
0
,
0
);
addWidget
(
m_diag
,
0
,
1
);
connect
(
m_list
,
SIGNAL
(
currentRowChanged
(
int
)),
this
,
SLOT
(
select_color
(
int
)));
connect
(
m_diag
,
SIGNAL
(
currentColorChanged
(
const
QColor
&
)),
this
,
SLOT
(
change_color
(
const
QColor
&
)));
}
unsigned
int
ColorsChooser
::
addColor
(
Geom
::
Vec3f
*
ptr
,
const
std
::
string
&
name
)
{
m_colors
.
push_back
(
ptr
);
m_list
->
addItem
(
QString
(
name
.
c_str
()));
return
m_colors
.
size
()
-
1
;
}
void
ColorsChooser
::
select_color
(
int
x
)
{
m_current
=
x
;
const
Geom
::
Vec3f
&
col
=
*
m_colors
[
x
];
m_diag
->
show
();
m_diag
->
setCurrentColor
(
QColor
(
int
(
255.0
f
*
col
[
0
]),
int
(
255.0
f
*
col
[
1
]),
int
(
255.0
f
*
col
[
2
]))
);
}
void
ColorsChooser
::
change_color
(
const
QColor
&
col
)
{
Geom
::
Vec3f
&
out
=
*
m_colors
[
m_current
];
out
[
0
]
=
float
(
col
.
redF
());
out
[
1
]
=
float
(
col
.
greenF
());
out
[
2
]
=
float
(
col
.
blueF
());
if
(
m_interf
)
{
updateCallBack
(
m_interf
);
m_interf
->
updateGL
();
}
}
}
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment