diff --git a/src/data/format/image.cpp b/src/data/format/image.cpp index 7a675b29..13797f1e 100644 --- a/src/data/format/image.cpp +++ b/src/data/format/image.cpp @@ -36,18 +36,23 @@ private: double angle = 0.0; }; Rotation UnzoomedDataViewer::getRotation() const { - if (use_zoom_settings) { + /*if (use_zoom_settings) { return DataViewer::getRotation(); } else { if (!stylesheet) stylesheet = set->stylesheet; return Rotation(angle, stylesheet->getCardRect(), zoom, 1.0, ROTATION_ATTACH_TOP_LEFT); - } + }*/ + + if (!stylesheet) stylesheet = set->stylesheet; + int export_zoom = settings.stylesheetSettingsFor(set->stylesheetFor(card)).export_zoom(); + return Rotation(angle, stylesheet->getCardRect(), export_zoom, 1.0, ROTATION_ATTACH_TOP_LEFT); } Bitmap export_bitmap(const SetP& set, const CardP& card) { if (!set) throw Error(_("no set")); // create viewer - UnzoomedDataViewer viewer(!settings.stylesheetSettingsFor(set->stylesheetFor(card)).card_normal_export()); + UnzoomedDataViewer viewer(false); + //UnzoomedDataViewer viewer(!settings.stylesheetSettingsFor(set->stylesheetFor(card)).card_normal_export()); viewer.setSet(set); viewer.setCard(card); // size of cards diff --git a/src/data/settings.cpp b/src/data/settings.cpp index 2f405a1b..e488aa51 100644 --- a/src/data/settings.cpp +++ b/src/data/settings.cpp @@ -122,6 +122,7 @@ IMPLEMENT_REFLECTION_NO_SCRIPT(GameSettings) { StyleSheetSettings::StyleSheetSettings() : card_zoom (1.0, true) + , export_zoom (2.0, true) , card_angle (0, true) , card_anti_alias (true, true) , card_borders (true, true) @@ -132,6 +133,7 @@ StyleSheetSettings::StyleSheetSettings() void StyleSheetSettings::useDefault(const StyleSheetSettings& ss) { if (card_zoom .isDefault()) card_zoom .assignDefault(ss.card_zoom); + if (export_zoom.isDefault()) export_zoom.assignDefault(ss.export_zoom); if (card_angle .isDefault()) card_angle .assignDefault(ss.card_angle); if (card_anti_alias .isDefault()) card_anti_alias .assignDefault(ss.card_anti_alias); if (card_borders .isDefault()) card_borders .assignDefault(ss.card_borders); @@ -142,6 +144,7 @@ void StyleSheetSettings::useDefault(const StyleSheetSettings& ss) { IMPLEMENT_REFLECTION_NO_SCRIPT(StyleSheetSettings) { REFLECT(card_zoom); + REFLECT(export_zoom); REFLECT(card_angle); REFLECT(card_anti_alias); REFLECT(card_borders); diff --git a/src/data/settings.hpp b/src/data/settings.hpp index d8305690..fcb3d340 100644 --- a/src/data/settings.hpp +++ b/src/data/settings.hpp @@ -98,6 +98,7 @@ public: // Rendering/display settings Defaultable card_zoom; + Defaultable export_zoom; Defaultable card_angle; Defaultable card_anti_alias; Defaultable card_borders; diff --git a/src/gui/preferences_window.cpp b/src/gui/preferences_window.cpp index 81606864..2b000b20 100644 --- a/src/gui/preferences_window.cpp +++ b/src/gui/preferences_window.cpp @@ -59,13 +59,18 @@ private: #else wxSpinCtrl* zoom; #endif - wxCheckBox* non_normal_export; + //wxCheckBox* non_normal_export; + wxComboBox* export_zoom; + int export_zoom_int; void onSelectColumns(wxCommandEvent&); #if USE_ZOOM_COMBOBOX void onZoomChange(wxCommandEvent&); void updateZoom(); #endif + + void onExportZoomChange(wxCommandEvent&); + void updateExportZoom(); }; // Preferences page for directories of programs @@ -202,14 +207,15 @@ DisplayPreferencesPage::DisplayPreferencesPage(Window* parent) #else zoom = new wxSpinCtrl(this, ID_ZOOM); #endif - non_normal_export = new wxCheckBox(this, wxID_ANY, _BUTTON_("zoom export")); + //non_normal_export = new wxCheckBox(this, wxID_ANY, _BUTTON_("zoom export")); //wxButton* columns = new wxButton(this, ID_SELECT_COLUMNS, _BUTTON_("select")); // set values high_quality-> SetValue( settings.default_stylesheet_settings.card_anti_alias()); borders-> SetValue( settings.default_stylesheet_settings.card_borders()); draw_editing-> SetValue( settings.default_stylesheet_settings.card_draw_editing()); spellcheck_enabled->SetValue( settings.default_stylesheet_settings.card_spellcheck_enabled()); - non_normal_export-> SetValue(!settings.default_stylesheet_settings.card_normal_export()); + //non_normal_export-> SetValue(!settings.default_stylesheet_settings.card_normal_export()); + export_zoom = new wxComboBox(this, ID_EXPORT_ZOOM); #if USE_ZOOM_COMBOBOX zoom_int = static_cast(settings.default_stylesheet_settings.card_zoom() * 100); zoom->SetValue(String::Format(_("%d%%"),zoom_int)); @@ -221,6 +227,14 @@ DisplayPreferencesPage::DisplayPreferencesPage(Window* parent) zoom->SetRange(1, 1000); zoom-> SetValue(static_cast(settings.default_stylesheet_settings.card_zoom() * 100)); #endif + + export_zoom_int = static_cast(settings.default_stylesheet_settings.export_zoom() * 100); + export_zoom->SetValue(String::Format(_("%d%%"), export_zoom_int)); + int export_choices[] = { 100,200,300,400,500 }; + for (unsigned int i = 0; i < sizeof(export_choices) / sizeof(export_choices[0]); ++i) { + export_zoom->Append(String::Format(_("%d%%"), export_choices[i])); + } + // init sizer wxSizer* s = new wxBoxSizer(wxVERTICAL); wxSizer* s2 = new wxStaticBoxSizer(wxVERTICAL, this, _LABEL_("card display")); @@ -233,18 +247,17 @@ DisplayPreferencesPage::DisplayPreferencesPage(Window* parent) s3->AddSpacer(2); s3->Add(zoom); s3->Add(new wxStaticText(this, wxID_ANY, _LABEL_("percent of normal")),1, wxALL & ~wxRIGHT, 4); + wxSizer* s4 = new wxBoxSizer(wxHORIZONTAL); + s4->Add(new wxStaticText(this, wxID_ANY, _LABEL_("export")), 0, wxALL & ~wxLEFT, 4); + s4->AddSpacer(2); + s4->Add(export_zoom); + s4->Add(new wxStaticText(this, wxID_ANY, _LABEL_("percent of normal")), 1, wxALL & ~wxRIGHT, 4); + s2->Add(s3, 0, wxEXPAND | wxALL, 4); - s2->Add(non_normal_export,0, wxEXPAND | wxALL, 4); - s2->Add(new wxStaticText(this, wxID_ANY, _HELP_("zoom export")), 0, wxALL & ~wxTOP, 4); + s2->Add(s4, 0, wxEXPAND | wxALL, 4); + s->Add(s2, 0, wxEXPAND | wxALL, 8); - /* - wxSizer* s4 = new wxStaticBoxSizer(wxVERTICAL, this, _("Card List")); - wxSizer* s5 = new wxBoxSizer(wxHORIZONTAL); - s5->Add(new wxStaticText(this, wxID_ANY, _("Columns: ")), 0, wxALL & ~wxLEFT | wxEXPAND, 4); - s5->Add(columns); - s4->Add(s5, 0, wxEXPAND | wxALL, 4); - s->Add(s4, 0, wxEXPAND | wxALL & ~wxTOP, 8); - */ + s->SetSizeHints(this); SetSizer(s); } @@ -260,7 +273,8 @@ void DisplayPreferencesPage::store() { #else settings.default_stylesheet_settings.card_zoom = zoom->GetValue() / 100.0; #endif - settings.default_stylesheet_settings.card_normal_export = !non_normal_export->GetValue(); + //settings.default_stylesheet_settings.card_normal_export = !non_normal_export->GetValue(); + settings.default_stylesheet_settings.export_zoom = export_zoom_int / 100.0; } void DisplayPreferencesPage::onSelectColumns(wxCommandEvent&) { @@ -281,12 +295,27 @@ void DisplayPreferencesPage::onSelectColumns(wxCommandEvent&) { } #endif + void DisplayPreferencesPage::onExportZoomChange(wxCommandEvent&) { + updateExportZoom(); + } + + void DisplayPreferencesPage::updateExportZoom() { + String s = export_zoom->GetValue(); + int i = export_zoom_int; + if (wxSscanf(s.c_str(), _("%u"), &i)) { + export_zoom_int = min(max(i, 1), 1000); + } + export_zoom->SetValue(String::Format(_("%d%%"), (int)export_zoom_int)); + } + BEGIN_EVENT_TABLE(DisplayPreferencesPage, wxPanel) EVT_BUTTON (ID_SELECT_COLUMNS, DisplayPreferencesPage::onSelectColumns) #if USE_ZOOM_COMBOBOX EVT_COMBOBOX (ID_ZOOM, DisplayPreferencesPage::onZoomChange) EVT_TEXT_ENTER (ID_ZOOM, DisplayPreferencesPage::onZoomChange) #endif + EVT_COMBOBOX(ID_EXPORT_ZOOM, DisplayPreferencesPage::onExportZoomChange) + EVT_TEXT_ENTER(ID_EXPORT_ZOOM, DisplayPreferencesPage::onExportZoomChange) END_EVENT_TABLE () diff --git a/src/util/window_id.hpp b/src/util/window_id.hpp index 5e11f8fe..b43f8a58 100644 --- a/src/util/window_id.hpp +++ b/src/util/window_id.hpp @@ -271,6 +271,9 @@ enum ControlID { ID_ZOOM, ID_ZOOM_X, ID_ZOOM_Y, + ID_EXPORT_ZOOM, + ID_EXPORT_ZOOM_X, + ID_EXPORT_ZOOM_Y, ID_SHARPEN, ID_SHARPEN_AMOUNT, // Updates window