/* * subtitle editor * * http://kitone.free.fr/subtitleeditor/ * * Copyright @ 2005-2006, kitone * * Contact: kitone at free dot fr * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * See gpl.txt for more information regarding the GNU General Public License. * * * \file * \brief * \author kitone (kitone at free dot fr) */ #include "StyleModel.h" #include "Color.h" StyleModel::StyleModel() { set_column_types(m_column); } Gtk::TreeIter StyleModel::append() { static Color blanc(255,255,255,255); static Color jaune(255,255,0,255); static Color marron(180,120,0,255); static Color noir(0,0,0,255); Gtk::TreeIter iter = Gtk::ListStore::append(); (*iter)[m_column.name] = "Default"; (*iter)[m_column.font_name] = "Sans"; (*iter)[m_column.font_size] = 18; (*iter)[m_column.primary_colour] = blanc; (*iter)[m_column.secondary_colour] = jaune; (*iter)[m_column.outline_colour] = marron; (*iter)[m_column.shadow_colour] = noir; (*iter)[m_column.bold] = false; (*iter)[m_column.italic] = false; (*iter)[m_column.underline] = false; (*iter)[m_column.strikeout] = false; (*iter)[m_column.scale_x] = 100; (*iter)[m_column.scale_y] = 100; (*iter)[m_column.spacing] = 0; (*iter)[m_column.angle] = 0; (*iter)[m_column.border_style] = 1; (*iter)[m_column.outline] = 0; (*iter)[m_column.shadow] = 0; (*iter)[m_column.alignment] = 2; (*iter)[m_column.margin_l] = 20; (*iter)[m_column.margin_r] = 20; (*iter)[m_column.margin_v] = 20; (*iter)[m_column.alpha_level] = 0; (*iter)[m_column.encoding] = 0; return iter; } /* * retourne une copy de iter */ Gtk::TreeIter StyleModel::copy( Gtk::TreeIter iter) { Gtk::TreeIter it = append(); (*it)[m_column.name] = (Glib::ustring)(*iter)[m_column.name]; (*it)[m_column.font_name] = (Glib::ustring)(*iter)[m_column.font_name]; (*it)[m_column.font_size] = (double)(*iter)[m_column.font_size]; (*it)[m_column.primary_colour] = (Color)(*iter)[m_column.primary_colour]; (*it)[m_column.secondary_colour] = (Color)(*iter)[m_column.secondary_colour]; (*it)[m_column.outline_colour] = (Color)(*iter)[m_column.outline_colour]; (*it)[m_column.shadow_colour] = (Color)(*iter)[m_column.shadow_colour]; (*it)[m_column.bold] = (bool)(*iter)[m_column.bold]; (*it)[m_column.italic] = (bool)(*iter)[m_column.italic]; (*it)[m_column.underline] = (bool)(*iter)[m_column.underline]; (*it)[m_column.strikeout] = (bool)(*iter)[m_column.strikeout]; (*it)[m_column.scale_x] = (unsigned int)(*iter)[m_column.scale_x]; (*it)[m_column.scale_y] = (unsigned int)(*iter)[m_column.scale_y]; (*it)[m_column.spacing] = (unsigned int)(*iter)[m_column.spacing]; (*it)[m_column.angle] = (unsigned int)(*iter)[m_column.angle]; (*it)[m_column.border_style] = (unsigned int)(*iter)[m_column.border_style]; (*it)[m_column.outline] = (unsigned int)(*iter)[m_column.outline]; (*it)[m_column.shadow] = (unsigned int)(*iter)[m_column.shadow]; (*it)[m_column.alignment] = (unsigned int)(*iter)[m_column.alignment]; (*it)[m_column.margin_l] = (unsigned int)(*iter)[m_column.margin_l]; (*it)[m_column.margin_r] = (unsigned int)(*iter)[m_column.margin_r]; (*it)[m_column.margin_v] = (unsigned int)(*iter)[m_column.margin_v]; (*it)[m_column.alpha_level] = (int)(*iter)[m_column.alpha_level]; (*it)[m_column.encoding] = (int)(*iter)[m_column.encoding]; return it; } /* * copy src dans this */ void StyleModel::copy(Glib::RefPtr src) { #define SET(col, cast) (*new_it)[m_column.col] = (cast)(*it)[m_column.col] g_return_if_fail(src); Gtk::TreeNodeChildren rows = src->children(); for(Gtk::TreeIter it = rows.begin(); it; ++it) { Gtk::TreeIter new_it = Gtk::ListStore::append(); SET(name, Glib::ustring); SET(font_name, Glib::ustring); SET(font_size, double); SET(primary_colour, Color); SET(secondary_colour, Color); SET(outline_colour, Color); SET(shadow_colour, Color); SET(bold, bool); SET(italic, bool); SET(underline, bool); SET(strikeout, bool); SET(scale_x, unsigned int); SET(scale_y, unsigned int); SET(spacing, unsigned int); SET(angle, unsigned int); SET(border_style, unsigned int); SET(outline, unsigned int); SET(shadow, unsigned int); SET(alignment, unsigned int); SET(margin_l, unsigned int); SET(margin_r, unsigned int); SET(margin_v, unsigned int); SET(alpha_level, int); SET(encoding, int); } #undef SET }