new color management design starts to take shape (canvas color only for now)

git-svn-id: svn://localhost/trunk/ardour2@326 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2006-02-14 17:19:58 +00:00
parent 898fba7b54
commit 517d411bb0
29 changed files with 620 additions and 167 deletions

View file

@ -82,6 +82,7 @@ simpleline.cc
canvas-simplerect.c
simplerect.cc
canvas-waveview.c
color_manager.cc
crossfade_edit.cc
crossfade_view.cc
curvetest.cc

100
gtk2_ardour/ardour.colors Normal file
View file

@ -0,0 +1,100 @@
cWaveForm 0.0 0.0 0.0 0.80
cMutedWaveForm 0.35 0.35 0.35 1.0
cSelectedFrameBase 0.71 0.57 0.66 1.0
cFrameBase 0.75 0.75 0.76 1.0
cAudioTrackBase 0.79 0.80 0.85 0.41
cAudioTrackOutline 0.00 0.00 0.00 1.00
cAudioBusBase 0.90 0.82 0.90 0.41
cTempoBar 0.64 0.64 0.66 1.0
cMeterBar 0.75 0.75 0.80 1.0
cMarkerBar 0.54 0.54 0.56 1.0
cRangeMarkerBar 0.48 0.48 0.50 1.0
cTransportMarkerBar 0.40 0.40 0.42 1.0
cTimeStretchFill 0.89 0.71 0.71 0.59
cTimeStretchOutline 0.39 0.39 0.39 0.59
cAutomationLine 0.27 0.74 0.35 1.0
cLeftPanAutomationLine 0.77 0.24 0.01 1.0
cRightPanAutomationLine 0.03 0.26 0.73 1.0
cRedirectAutomationLine 0.28 0.34 0.74 1.0
cControlPointFill 0 0 0 1.0
cControlPointOutline 0 0 0 1.0
cEnteredControlPointOutline 1.0 0.21 0.21 1.0
cEnteredControlPointSelected 0.00 1.00 0.00 1.00
cEnteredControlPoint 1.00 0.00 0.00 1.00
cControlPointSelected 0.91 0.04 0.04 1.00
cControlPoint 0.00 0.00 0.00 1.00
cAutomationTrackFill 0.63 0.63 0.81 0.41
cAutomationTrackOutline 0.16 0.16 0.16 1.0
cCrossfadeEditorBase 0.16 0.18 0.29 1.0
cCrossfadeEditorLine 0 0 0 1.0
cSelectedCrossfadeEditorLine 0 0.86 0.86 1.0
cCrossfadeEditorLineShading 0 0.63 0.82 0.33
cCrossfadeEditorPointFill 0 1.0 0 1.0
cCrossfadeEditorPointOutline 0 0 1.0 1.0
cCrossfadeEditorWave 1.0 1.0 1.0 0.16
cSelectedCrossfadeEditorWave 0.98 0.92 0.08 0.63
cCrossfadeLine 0 0 0 1.0
cActiveCrossfade 0.91 0.93 0.24 0.47
cInactiveCrossfade 0 0 0 0
cLocationMarker 0.77 0.96 0.07 1.0
cLocationRange 0.29 0.48 0.35 1.0
cLocationCDMarker 0.12 0.91 0.77 1.0
cLocationLoop 0.21 0.59 0.31 1.0
cLocationPunch 0.49 0.23 0.23 1.0
cVerboseCanvasCursor 0 0 0 0.74
cRangeDragBarRect 0.59 0.59 0.59 0.78
cRangeDragBarRectFill 0.78 0.82 0.70 0.43
cRangeDragRect 0.59 0.59 0.59 0.78
cRangeDragRectFill 0.51 0.78 0.59 0.78
cTransportDragRect 0.59 0.59 0.59 0.78
cTransportDragRectFill 0.78 0.78 0.78 1.43
cMarkerDragLine 0 0.31 0 0.98
cTransportLoopRect 0.12 0.47 0.16 0.98
cTransportLoopRectFill 0.12 0.47 0.16 0.98
cTransportPunchRect 0.43 0.16 0.16 0.90
cTransportPunchRectFill 0.43 0.16 0.16 0.90
cPunchInLine 0.66 0.00 0.00 1.00
cPunchOutLine 0.66 0.00 0.00 1.00
cZoomRect 0.59 0.59 0.59 0.78
cZoomRectFill 0.78 0.82 0.70 0.43
cRubberBandRect 0.08 1.00 0.52 0.59
cRubberBandRectFill 0.78 0.78 0.78 0.35
cFirstActionMessage 0.00 0.00 0.00 1.00
cEnteredGainLine 0.87 0.39 0.39 1.00
cEnteredAutomationLine 0.87 0.39 0.39 1.00
cEnteredMarker 0.87 0.39 0.39 1.00
cMeterMarker 0.95 0.26 0.36 1.00
cTempoMarker 0.95 0.26 0.36 1.00
cMeasureLineBeat 0.51 0.59 0.87 0.98
cMeasureLineBar 0.68 0.68 0.59 0.94
cGhostTrackBaseOutline 0.00 0.00 0.00 1.00
cGhostTrackBaseFill 0.27 0.00 0.49 0.50
cImageTrackBase 0.87 0.87 0.85 1.00
cImageTrackOutline 0.00 0.00 0.00 1.00
cMarkerTrackBase 0.87 0.87 0.85 1.00
cMarkerTrackOutline 0.00 0.00 0.00 1.00
cZeroLine 0.71 0.71 0.71 1.00
cGainLine 0.00 1.00 0.00 1.00
cGainLineInactive 0.06 0.06 0.06 1.00
cRecordingRectFill 0.90 0.78 0.78 1.00
cRecordingRectOutline 0.31 0.16 0.16 1.00
cSelectionRectFill 0.91 0.96 0.83 0.47
cSelectionRectOutline 0.39 0.39 0.39 0.59
cSelectionEndFill 0.39 0.39 0.39 0.70
cSelectionEndOutline 0.39 0.39 0.39 1.0
cSelectionStartFill 0.39 0.39 0.39 0.70
cSelectionStartOutline 0.39 0.39 0.39 1.0
cVestigialFrameFill 0.27 0.00 0.49 0.06
cVestigialFrameOutline 0.00 0.00 0.00 1.00
cTimeAxisFrameFill 0.27 0.00 0.49 0.06
cTimeAxisFrameOutline 0.00 0.00 0.00 1.00
cNameHighlightFill 0.00 0.00 1.00 1.00
cNameHighlightOutline 0.49 0.00 1.00 0.59
cFrameHandleStartFill 0.49 0.00 1.00 0.59
cFrameHandleStartOutline 0.00 0.00 0.00 1.00
cFrameHandleEndFill 0.49 0.00 1.00 0.59
cFrameHandleEndOutline 0.00 0.00 0.00 1.00
cTrimHandleLockedStart 0.92 0.06 0.06 0.16
cTrimHandleLockedEnd 0.92 0.06 0.06 0.16
cTrimHandleStart 0.10 0.00 1.00 0.27
cTrimHandleEnd 0.10 0.00 1.00 0.27

View file

@ -178,6 +178,7 @@
<menuitem action='ToggleSoundFileBrowser'/>
<menuitem action='ToggleConnections'/>
<menuitem action='ToggleLocations'/>
<menuitem action='ToggleColorManager'/>
<menuitem action='ToggleBigClock'/>
<separator/>
<menuitem action='About'/>

View file

@ -72,6 +72,7 @@
#include "utils.h"
#include "gui_thread.h"
#include "meter_xpms.h"
#include "color_manager.h"
#include "i18n.h"
@ -142,6 +143,16 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
ActionManager::init ();
/* load colors */
color_manager = new ColorManager();
std::string color_file = Glib::getenv(X_("ARDOUR_COLORS"));
if(!Glib::file_test(color_file, Glib::FILE_TEST_EXISTS)) {
color_file = ARDOUR::find_config_file("ardour.colors");
}
color_manager->load (color_file);
m_new_session_dialog = 0;
m_new_session_dialog_ref = NewSessionDialogFactory::create();
m_new_session_dialog_ref->get_widget_derived (NewSessionDialogFactory::top_level_widget_name(), m_new_session_dialog);

View file

@ -76,6 +76,7 @@ class About;
class AddRouteDialog;
class NewSessionDialog;
class LocationUI;
class ColorManager;
namespace Gtkmm2ext {
class TearOff;
@ -146,6 +147,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
Mixer_UI* the_mixer() { return mixer; }
void toggle_location_window ();
void toggle_color_manager ();
void toggle_big_clock_window ();
void toggle_connection_editor ();
void toggle_route_params_window ();
@ -586,6 +588,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI
LocationUI *location_ui;
int create_location_ui ();
ColorManager* color_manager;
/* Options window */
OptionEditor *option_editor;

View file

@ -34,6 +34,7 @@
#include "public_editor.h"
#include "route_params_ui.h"
#include "sfdb_ui.h"
#include "color_manager.h"
#include "i18n.h"
@ -287,6 +288,22 @@ ARDOUR_UI::toggle_location_window ()
}
}
void
ARDOUR_UI::toggle_color_manager ()
{
RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("ToggleColorManager"));
if (act) {
RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic(act);
if (tact->get_active()) {
color_manager->show_all ();
color_manager->present ();
} else {
color_manager->hide ();
}
}
}
int
ARDOUR_UI::create_route_params ()
{

View file

@ -178,6 +178,7 @@ ARDOUR_UI::install_actions ()
act = ActionManager::register_toggle_action (common_actions, X_("ToggleBigClock"), _("Big Clock"), mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::register_action (common_actions, X_("About"), _("About"), mem_fun(*this, &ARDOUR_UI::show_splash));
act = ActionManager::register_toggle_action (common_actions, X_("ToggleColorManager"), _("Colors"), mem_fun(*this, &ARDOUR_UI::toggle_color_manager));
act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("add audio track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1, ARDOUR::Normal));
ActionManager::session_sensitive_actions.push_back (act);

View file

@ -261,6 +261,7 @@ AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session& sess, Route& rt
}
editor.ZoomChanged.connect (mem_fun(*this, &AudioTimeAxisView::reset_samples_per_unit));
ColorChanged.connect (mem_fun (*this, &AudioTimeAxisView::color_handler));
}
AudioTimeAxisView::~AudioTimeAxisView ()
@ -1952,3 +1953,18 @@ AudioTimeAxisView::get_child_xml_node (const string & childname)
{
return RouteUI::get_child_xml_node (childname);
}
void
AudioTimeAxisView::color_handler (ColorID id, uint32_t val)
{
switch (id) {
case cTimeStretchOutline:
timestretch_rect->property_outline_color_rgba() = val;
break;
case cTimeStretchFill:
timestretch_rect->property_fill_color_rgba() = val;
break;
default:
break;
}
}

View file

@ -40,6 +40,7 @@
#include "enums.h"
#include "time_axis_view.h"
#include "canvas.h"
#include "color.h"
namespace ALSA {
class MultiChannelDevice;
@ -311,6 +312,8 @@ class AudioTimeAxisView : public RouteUI, public TimeAxisView
void add_ghost_to_redirect (AudioRegionView*, AutomationTimeAxisView*);
void map_frozen ();
void color_handler (ColorID, uint32_t);
};
#endif /* __ardour_trackview_h__ */

19
gtk2_ardour/color.h Normal file
View file

@ -0,0 +1,19 @@
#ifndef __gtk_ardour_color_h__
#define __gtk_ardour_color_h__
#include <sigc++/signal.h>
#undef COLORID
#define COLORID(a) a,
enum ColorID {
#include "colors.h"
};
#undef COLORID
typedef std::map<ColorID,int> ColorMap;
extern ColorMap color_map;
extern sigc::signal<void> ColorsChanged;
extern sigc::signal<void,ColorID,uint32_t> ColorChanged;
#endif /* __gtk_ardour_color_h__ */

View file

@ -0,0 +1,203 @@
#include <cmath>
#include <iostream>
#include <fstream>
#include <errno.h>
#include <gtkmm/stock.h>
#include "color_manager.h"
#include "rgb_macros.h"
#include "i18n.h"
using namespace std;
using namespace Gtk;
/* the global color map */
ColorMap color_map;
/* lookup table of color IDs as strings */
#undef COLORID
#define COLORID(s) #s,
static const char *color_id_strs[] = {
#include "colors.h"
};
#undef COLORID
/* global color change signals */
sigc::signal<void> ColorsChanged;
sigc::signal<void,ColorID,uint32_t> ColorChanged;
ColorManager::ColorManager()
: ArdourDialog ("ColorManager")
{
color_list = ListStore::create (columns);
color_display.set_model (color_list);
color_display.append_column (_("Object"), columns.name);
color_display.append_column (_("Color"), columns.color);
color_display.get_column (0)->set_data (X_("colnum"), GUINT_TO_POINTER(0));
color_display.get_column (1)->set_data (X_("colnum"), GUINT_TO_POINTER(1));
color_display.set_reorderable (false);
color_display.get_selection()->set_mode (SELECTION_NONE);
color_display.set_headers_visible (true);
CellRenderer* color_cell = color_display.get_column_cell_renderer (1);
TreeViewColumn* color_column = color_display.get_column (1);
color_column->add_attribute (color_cell->property_cell_background_gdk(), columns.gdkcolor);
scroller.add (color_display);
scroller.set_policy (POLICY_NEVER, POLICY_AUTOMATIC);
get_vbox()->pack_start (scroller);
color_display.signal_button_press_event().connect (mem_fun (*this, &ColorManager::button_press_event), false);
color_dialog.get_colorsel()->set_has_opacity_control (true);
color_dialog.get_colorsel()->set_has_palette (true);
color_dialog.get_ok_button()->signal_clicked().connect (bind (mem_fun (color_dialog, &Gtk::Dialog::response), RESPONSE_ACCEPT));
color_dialog.get_cancel_button()->signal_clicked().connect (bind (mem_fun (color_dialog, &Gtk::Dialog::response), RESPONSE_CANCEL));
set_size_request (-1, 400);
}
ColorManager::~ColorManager()
{
}
int
ColorManager::load (string path)
{
ifstream in (path.c_str());
if (!in) {
error << string_compose (_("cannot open color definition file %1: %2"), path, strerror(errno)) << endmsg;
return -1;
}
while (in) {
string name;
double r, g, b, a;
in >> name; if (!in) break;
in >> r; if (!in) break;
in >> g; if (!in) break;
in >> b; if (!in) break;
in >> a; if (!in) break;
for (uint32_t i = 0; i < sizeof (color_id_strs)/sizeof(color_id_strs[0]); ++i) {
if (name == color_id_strs[i]) {
/* set color map */
int ir,ig,ib,ia;
int rgba;
ir = (int) floor (r * 255.0);
ig = (int) floor (g * 255.0);
ib = (int) floor (b * 255.0);
ia = (int) floor (a * 255.0);
rgba = RGBA_TO_UINT (ir, ig, ib, ia);
color_map[(ColorID)i] = rgba;
/* set up list entry */
Gdk::Color col;
col.set_rgb_p (r,g,b);
TreeModel::Row row = *(color_list->append());
/* all the color names are prefixed by 'c' to avoid
naming collisions when used as enums. trim
this leading character from the displayed
value.
*/
row[columns.name] = name.substr (1);
row[columns.color] = "";
row[columns.id] = (ColorID) i;
row[columns.gdkcolor] = col;
row[columns.rgba] = rgba;
break;
}
}
}
ColorsChanged(); /* emit signal */
return 0;
}
int
ColorManager::save (string path)
{
return 0;
}
bool
ColorManager::button_press_event (GdkEventButton* ev)
{
TreeIter iter;
TreeModel::Path path;
TreeViewColumn* column;
int cellx;
int celly;
if (!color_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) {
return false;
}
switch (GPOINTER_TO_UINT (column->get_data (X_("colnum")))) {
case 0:
/* allow normal processing to occur */
return false;
case 1: /* color */
if ((iter = color_list->get_iter (path))) {
ColorID edit_color_id = (*iter)[columns.id];
int r,g, b, a;
uint32_t rgba;
Gdk::Color color;
ResponseType result = (ResponseType) color_dialog.run();
switch (result) {
case RESPONSE_CANCEL:
break;
case RESPONSE_ACCEPT:
color = color_dialog.get_colorsel()->get_current_color();
a = color_dialog.get_colorsel()->get_current_alpha();
r = (int) floor (color.get_red_p() * 255.0);
g = (int) floor (color.get_green_p() * 255.0);
b = (int) floor (color.get_blue_p() * 255.0);
rgba = RGBA_TO_UINT(r,g,b,a);
(*iter)[columns.rgba] = rgba;
(*iter)[columns.gdkcolor] = color;
color_map[edit_color_id] = rgba;
ColorChanged (edit_color_id, rgba);
break;
default:
break;
}
color_dialog.hide ();
}
return true;
default:
break;
}
return false;
}

View file

@ -0,0 +1,48 @@
#ifndef __ardour_gtk_color_manager_h__
#define __ardour_gtk_color_manager_h__
#include <gtkmm/treeview.h>
#include <gtkmm/liststore.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/colorselection.h>
#include "ardour_dialog.h"
#include "color.h"
class ColorManager : public ArdourDialog
{
public:
ColorManager();
~ColorManager();
int load (std::string path);
int save (std::string path);
private:
struct ColorDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
ColorDisplayModelColumns() {
add (name);
add (color);
add (gdkcolor);
add (id);
add (rgba);
}
Gtk::TreeModelColumn<Glib::ustring> name;
Gtk::TreeModelColumn<Glib::ustring> color;
Gtk::TreeModelColumn<Gdk::Color> gdkcolor;
Gtk::TreeModelColumn<ColorID> id;
Gtk::TreeModelColumn<uint32_t> rgba;
};
ColorDisplayModelColumns columns;
Gtk::TreeView color_display;
Glib::RefPtr<Gtk::ListStore> color_list;
Gtk::ColorSelectionDialog color_dialog;
Gtk::ScrolledWindow scroller;
bool button_press_event (GdkEventButton*);
};
#endif /* __ardour_gtk_color_manager_h__ */

103
gtk2_ardour/colors.h Normal file
View file

@ -0,0 +1,103 @@
/* no guard clauses here */
COLORID(cWaveForm)
COLORID(cMutedWaveForm)
COLORID(cSelectedFrameBase)
COLORID(cFrameBase)
COLORID(cAudioTrackBase)
COLORID(cAudioTrackOutline)
COLORID(cAudioBusBase)
COLORID(cTimeStretchFill)
COLORID(cTimeStretchOutline)
COLORID(cAutomationLine)
COLORID(cLeftPanAutomationLine)
COLORID(cRightPanAutomationLine)
COLORID(cRedirectAutomationLine)
COLORID(cControlPointFill)
COLORID(cControlPointOutline)
COLORID(cEnteredControlPointOutline)
COLORID(cEnteredControlPointSelected)
COLORID(cEnteredControlPoint)
COLORID(cControlPointSelected)
COLORID(cControlPoint)
COLORID(cAutomationTrackFill)
COLORID(cAutomationTrackOutline)
COLORID(cCrossfadeEditorBase)
COLORID(cCrossfadeEditorLine)
COLORID(cSelectedCrossfadeEditorLine)
COLORID(cCrossfadeEditorLineShading)
COLORID(cCrossfadeEditorPointFill)
COLORID(cCrossfadeEditorPointOutline)
COLORID(cCrossfadeEditorWave)
COLORID(cSelectedCrossfadeEditorWave)
COLORID(cCrossfadeLine)
COLORID(cActiveCrossfade)
COLORID(cInactiveCrossfade)
COLORID(cLocationMarker)
COLORID(cLocationRange)
COLORID(cLocationCDMarker)
COLORID(cLocationLoop)
COLORID(cLocationPunch)
COLORID(cVerboseCanvasCursor)
COLORID(cTempoBar)
COLORID(cMeterBar)
COLORID(cMarkerBar)
COLORID(cRangeMarkerBar)
COLORID(cTransportMarkerBar)
COLORID(cRangeDragBarRect)
COLORID(cRangeDragBarRectFill)
COLORID(cRangeDragRect)
COLORID(cRangeDragRectFill)
COLORID(cTransportDragRect)
COLORID(cTransportDragRectFill)
COLORID(cMarkerDragLine)
COLORID(cTransportLoopRect)
COLORID(cTransportLoopRectFill)
COLORID(cTransportPunchRect)
COLORID(cTransportPunchRectFill)
COLORID(cPunchInLine)
COLORID(cPunchOutLine)
COLORID(cZoomRect)
COLORID(cZoomRectFill)
COLORID(cRubberBandRect)
COLORID(cRubberBandRectFill)
COLORID(cFirstActionMessage)
COLORID(cEnteredGainLine)
COLORID(cEnteredAutomationLine)
COLORID(cEnteredMarker)
COLORID(cMeterMarker)
COLORID(cTempoMarker)
COLORID(cMeasureLineBeat)
COLORID(cMeasureLineBar)
COLORID(cGhostTrackBaseOutline)
COLORID(cGhostTrackBaseFill)
COLORID(cGhostTrackWave)
COLORID(cImageTrackBase)
COLORID(cImageTrackOutline)
COLORID(cMarkerTrackBase)
COLORID(cMarkerTrackOutline)
COLORID(cZeroLine)
COLORID(cGainLine)
COLORID(cGainLineInactive)
COLORID(cRecordingRectFill)
COLORID(cRecordingRectOutline)
COLORID(cSelectionRectFill)
COLORID(cSelectionRectOutline)
COLORID(cSelectionEndFill)
COLORID(cSelectionEndOutline)
COLORID(cSelectionStartFill)
COLORID(cSelectionStartOutline)
COLORID(cVestigialFrameFill)
COLORID(cVestigialFrameOutline)
COLORID(cTimeAxisFrameFill)
COLORID(cTimeAxisFrameOutline)
COLORID(cNameHighlightFill)
COLORID(cNameHighlightOutline)
COLORID(cFrameHandleStartFill)
COLORID(cFrameHandleStartOutline)
COLORID(cFrameHandleEndFill)
COLORID(cFrameHandleEndOutline)
COLORID(cTrimHandleLockedStart)
COLORID(cTrimHandleLockedEnd)
COLORID(cTrimHandleStart)
COLORID(cTrimHandleEnd)

View file

@ -47,6 +47,7 @@
#include "canvas_impl.h"
#include "simplerect.h"
#include "waveview.h"
#include "color.h"
using namespace std;
using namespace ARDOUR;
@ -128,7 +129,7 @@ CrossfadeEditor::CrossfadeEditor (Session& s, Crossfade& xf, double my, double m
toplevel->property_x2() = 10.0;
toplevel->property_y2() = 10.0;
toplevel->property_fill() = true;
toplevel->property_fill_color_rgba() = (guint32) color_map[cCrossfadeEditorBase];
toplevel->property_fill_color_rgba() = color_map[cCrossfadeEditorBase];
toplevel->property_outline_pixels() = 0;
toplevel->signal_event().connect (mem_fun (*this, &CrossfadeEditor::canvas_event));

View file

@ -87,18 +87,4 @@ str2displaycontrol (const string & str) {
#undef DISPLAYCONTROL
#define DISPLAYCONTROL(a) /*empty*/
// COLORID
#undef COLORID
#define COLORID(s) if (!strcmp(type, #s)) {return s;}
ColorID
str2color_id (const string & str) {
const char* type = str.c_str();
#include "editing_syms.h"
return cFrameHandleEndOutline;
}
#undef COLORID
#define COLORID(a) /*empty*/
ColorMap color_map;
} // namespace Editing

View file

@ -13,7 +13,6 @@
#define MOUSEMODE(a) /*empty*/
#define ZOOMFOCUS(a) /*empty*/
#define DISPLAYCONTROL(a) /*empty*/
#define COLORID(a) /*empty*/
namespace Editing {
@ -125,23 +124,6 @@ DisplayControl str2displaycontrol (const std::string &);
#undef DISPLAYCONTROL
#define DISPLAYCONTROL(a) /*empty*/
#undef COLORID
#define COLORID(a) a,
enum ColorID {
#include "editing_syms.h"
};
#undef COLORID
#define COLORID(s) #s,
static const char *color_id_strs[] = {
#include "editing_syms.h"
};
inline const char* enum2str(ColorID m) {return color_id_strs[m];}
ColorID str2color_id (const std::string &);
#undef COLORID
#define COLORID(a) /*empty*/
/////////////////////
// These don't need their state saved. yet...
enum CutCopyOp {
@ -156,16 +138,6 @@ enum XFadeType {
At
};
struct Color {
char r;
char g;
char b;
char a;
};
typedef std::map<Editing::ColorID,int> ColorMap;
extern ColorMap color_map;
} // namespace Editing
#endif // __gtk_ardour_editing_h__

View file

@ -53,105 +53,3 @@ DISPLAYCONTROL(FollowPlayhead)
DISPLAYCONTROL(ShowMeasures)
DISPLAYCONTROL(ShowWaveforms)
DISPLAYCONTROL(ShowWaveformsRecording)
COLORID(cWaveForm)
COLORID(cMutedWaveForm)
COLORID(cSelectedFrameBase)
COLORID(cFrameBase)
COLORID(cAudioTrackBase)
COLORID(cAudioTrackOutline)
COLORID(cAudioBusBase)
COLORID(cTimeStretchFill)
COLORID(cTimeStretchOutline)
COLORID(cAutomationLine)
COLORID(cLeftPanAutomationLine)
COLORID(cRightPanAutomationLine)
COLORID(cRedirectAutomationLine)
COLORID(cControlPointFill)
COLORID(cControlPointOutline)
COLORID(cEnteredControlPointOutline)
COLORID(cEnteredControlPointSelected)
COLORID(cEnteredControlPoint)
COLORID(cControlPointSelected)
COLORID(cControlPoint)
COLORID(cAutomationTrackFill)
COLORID(cAutomationTrackOutline)
COLORID(cCrossfadeEditorBase)
COLORID(cCrossfadeEditorLine)
COLORID(cSelectedCrossfadeEditorLine)
COLORID(cCrossfadeEditorLineShading)
COLORID(cCrossfadeEditorPointFill)
COLORID(cCrossfadeEditorPointOutline)
COLORID(cCrossfadeEditorWave)
COLORID(cSelectedCrossfadeEditorWave)
COLORID(cCrossfadeLine)
COLORID(cActiveCrossfade)
COLORID(cInactiveCrossfade)
COLORID(cLocationMarker)
COLORID(cLocationRange)
COLORID(cLocationCDMarker)
COLORID(cLocationLoop)
COLORID(cLocationPunch)
COLORID(cVerboseCanvasCursor)
COLORID(cTempoBar)
COLORID(cMeterBar)
COLORID(cMarkerBar)
COLORID(cRangeMarkerBar)
COLORID(cTransportMarkerBar)
COLORID(cRangeDragBarRect)
COLORID(cRangeDragBarRectFill)
COLORID(cRangeDragRect)
COLORID(cRangeDragRectFill)
COLORID(cTransportDragRect)
COLORID(cTransportDragRectFill)
COLORID(cMarkerDragLine)
COLORID(cTransportLoopRect)
COLORID(cTransportLoopRectFill)
COLORID(cTransportPunchRect)
COLORID(cTransportPunchRectFill)
COLORID(cPunchInLine)
COLORID(cPunchOutLine)
COLORID(cZoomRect)
COLORID(cZoomRectFill)
COLORID(cRubberBandRect)
COLORID(cRubberBandRectFill)
COLORID(cFirstActionMessage)
COLORID(cEnteredGainLine)
COLORID(cEnteredAutomationLine)
COLORID(cEnteredMarker)
COLORID(cMeterMarker)
COLORID(cTempoMarker)
COLORID(cMeasureLineBeat)
COLORID(cMeasureLineBar)
COLORID(cGhostTrackBaseOutline)
COLORID(cGhostTrackBaseFill)
COLORID(cGhostTrackWave)
COLORID(cImageTrackBase)
COLORID(cImageTrackOutline)
COLORID(cMarkerTrackBase)
COLORID(cMarkerTrackOutline)
COLORID(cZeroLine)
COLORID(cGainLine)
COLORID(cGainLineInactive)
COLORID(cRecordingRectFill)
COLORID(cRecordingRectOutline)
COLORID(cSelectionRectFill)
COLORID(cSelectionRectOutline)
COLORID(cSelectionEndFill)
COLORID(cSelectionEndOutline)
COLORID(cSelectionStartFill)
COLORID(cSelectionStartOutline)
COLORID(cVestigialFrameFill)
COLORID(cVestigialFrameOutline)
COLORID(cTimeAxisFrameFill)
COLORID(cTimeAxisFrameOutline)
COLORID(cNameHighlightFill)
COLORID(cNameHighlightOutline)
COLORID(cFrameHandleStartFill)
COLORID(cFrameHandleStartOutline)
COLORID(cFrameHandleEndFill)
COLORID(cFrameHandleEndOutline)
COLORID(cTrimHandleLockedStart)
COLORID(cTrimHandleLockedEnd)
COLORID(cTrimHandleStart)
COLORID(cTrimHandleEnd)

View file

@ -274,8 +274,6 @@ Editor::Editor (AudioEngine& eng)
PublicEditor::_instance = this;
init_colormap ();
session = 0;
selection = new Selection;
@ -3900,18 +3898,6 @@ Editor::prepare_for_cleanup ()
selection->clear_playlists ();
}
void
Editor::init_colormap ()
{
for (size_t x = 0; x < sizeof (color_id_strs) / sizeof (color_id_strs[0]); ++x) {
pair<ColorID,int> newpair;
newpair.first = (ColorID) x;
newpair.second = rgba_from_style (enum2str (newpair.first), 0, 0, 0, 255);
color_map.insert (newpair);
}
}
Location*
Editor::transport_loop_location()
{

View file

@ -1836,9 +1836,6 @@ class Editor : public PublicEditor
void toggle_gain_envelope_visibility ();
void toggle_gain_envelope_active ();
typedef std::map<Editing::ColorID,std::string> ColorStyleMap;
void init_colormap ();
bool on_key_press_event (GdkEventKey*);
void session_state_saved (string);

View file

@ -42,6 +42,7 @@
#include "tempo_dialog.h"
#include "rgb_macros.h"
#include "gui_thread.h"
#include "color.h"
#include "i18n.h"

View file

@ -250,8 +250,6 @@ ExportDialog::ExportDialog(PublicEditor& e, AudioRegion* r)
/* determine longest strings at runtime */
const guint32 FUDGE = 10; // Combo's are stupid - they steal space from the entry for the button
maxlen = 0;
const char *longest = "gl";
string longest_str;

View file

@ -280,8 +280,8 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer)
_route.comment());
comment_button.signal_clicked().connect (mem_fun(*this, &MixerStrip::comment_button_clicked));
global_vpacker.set_border_width (4);
global_vpacker.set_spacing (4);
global_vpacker.set_border_width (0);
global_vpacker.set_spacing (0);
Gtk::VBox *whvbox = manage (new Gtk::VBox);

View file

@ -190,6 +190,8 @@ AudioRegionView::init (double amplitude_above_axis, Gdk::Color& basic_color, boo
set_colors ();
ColorChanged.connect (mem_fun (*this, &AudioRegionView::color_handler));
/* XXX sync mark drag? */
}
@ -1374,4 +1376,30 @@ AudioRegionView::set_waveview_data_src()
}
void
AudioRegionView::color_handler (ColorID id, uint32_t val)
{
switch (id) {
case cMutedWaveForm:
case cWaveForm:
set_colors ();
break;
case cGainLineInactive:
case cGainLine:
envelope_active_changed();
break;
case cZeroLine:
if (zero_line) {
zero_line->property_color_rgba() = (guint) color_map[cZeroLine];
}
break;
case cGhostTrackWave:
break;
default:
break;
}
}

View file

@ -33,6 +33,7 @@
#include "enums.h"
#include "waveview.h"
#include "canvas.h"
#include "color.h"
namespace ARDOUR {
class AudioRegion;
@ -198,6 +199,8 @@ class AudioRegionView : public TimeAxisViewItem
vector<GnomeCanvasWaveViewCache*> wave_caches;
vector<GhostRegion*> ghosts;
void color_handler (ColorID, uint32_t);
};
#endif /* __gtk_ardour_region_view_h__ */

View file

@ -25,6 +25,7 @@
#include "rgb_macros.h"
#include "gui_thread.h"
#include "utils.h"
#include "color.h"
using namespace ARDOUR;
using namespace Editing;
@ -74,6 +75,8 @@ StreamView::StreamView (AudioTimeAxisView& tv)
rec_active = false;
use_rec_regions = tv.editor.show_waveforms_recording ();
last_rec_peak_frame = 0;
ColorChanged.connect (mem_fun (*this, &StreamView::color_handler));
}
StreamView::~StreamView ()
@ -918,3 +921,26 @@ StreamView::reveal_xfades_involving (AudioRegionView& rv)
}
}
}
void
StreamView::color_handler (ColorID id, uint32_t val)
{
switch (id) {
case cAudioTrackBase:
if (_trackview.is_audio_track()) {
canvas_rect->property_fill_color_rgba() = val;
}
break;
case cAudioBusBase:
if (!_trackview.is_audio_track()) {
canvas_rect->property_fill_color_rgba() = val;
}
break;
case cAudioTrackOutline:
canvas_rect->property_outline_color_rgba() = val;
break;
default:
break;
}
}

View file

@ -29,6 +29,7 @@
#include "enums.h"
#include "simplerect.h"
#include "canvas.h"
#include "color.h"
namespace Gdk {
class Color;
@ -167,6 +168,8 @@ class StreamView : public sigc::trackable
Gdk::Color region_color;
uint32_t stream_base_color;
void color_handler (ColorID, uint32_t);
vector<sigc::connection> playlist_connections;
sigc::connection playlist_change_connection;
};

View file

@ -98,6 +98,8 @@ TapeAudioRegionView::init (double amplitude_above_axis, Gdk::Color& basic_color,
/* no events, no state changes */
set_colors ();
// ColorChanged.connect (mem_fun (*this, &AudioRegionView::color_handler));
}
TapeAudioRegionView::~TapeAudioRegionView()

View file

@ -147,6 +147,8 @@ TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisVie
controls_frame.add (controls_hbox);
controls_frame.set_name ("TimeAxisViewControlsBaseUnselected");
controls_frame.set_shadow_type (Gtk::SHADOW_OUT);
ColorChanged.connect (mem_fun (*this, &TimeAxisView::color_handler));
}
TimeAxisView::~TimeAxisView()
@ -1003,3 +1005,24 @@ TimeAxisView::hide_name_entry ()
name_packing = NamePackingBits (name_packing & ~NameEntryPacked);
}
}
void
TimeAxisView::color_handler (ColorID id, uint32_t val)
{
switch (id) {
case cSelectionRectFill:
break;
case cSelectionRectOutline:
break;
case cSelectionStartFill:
break;
case cSelectionStartOutline:
break;
case cSelectionEndFill:
break;
case cSelectionEndOutline:
break;
default:
break;
}
}

View file

@ -39,6 +39,7 @@
#include "enums.h"
#include "editing.h"
#include "canvas.h"
#include "color.h"
namespace ARDOUR {
class Session;
@ -311,6 +312,7 @@ class TimeAxisView : public virtual AxisView
static bool need_size_info;
void set_height_pixels (uint32_t h);
void color_handler (ColorID, uint32_t);
}; /* class TimeAxisView */