diff --git a/src/data/format/clipboard.cpp b/src/data/format/clipboard.cpp index 75a0f562..560c7f98 100644 --- a/src/data/format/clipboard.cpp +++ b/src/data/format/clipboard.cpp @@ -7,6 +7,7 @@ // ----------------------------------------------------------------------------- : Includes #include +#include #include #include #include @@ -77,7 +78,7 @@ CardOnClipboard::CardOnClipboard(const SetP& set, const CardP& card) { // TODO //Add( new TextDataObject(_("card"))) // Conversion to bitmap format -// Add(new BitmapDataObject(exportImageBmp(set, card))); + Add(new wxBitmapDataObject(export_bitmap(set, card))); // Conversion to serialized card format Add(new CardDataObject(set, card), true); } diff --git a/src/data/format/image.cpp b/src/data/format/image.cpp new file mode 100644 index 00000000..cf980799 --- /dev/null +++ b/src/data/format/image.cpp @@ -0,0 +1,47 @@ +//+----------------------------------------------------------------------------+ +//| Description: Magic Set Editor - Program to make Magic (tm) cards | +//| Copyright: (C) 2001 - 2006 Twan van Laarhoven | +//| License: GNU General Public License 2 or later (see file COPYING) | +//+----------------------------------------------------------------------------+ + +// ----------------------------------------------------------------------------- : Includes + +#include +#include +#include +#include + +// ----------------------------------------------------------------------------- : Single card export + +void export_image(const SetP& set, const CardP& card, const String& filename) { + Image img = export_bitmap(set, card).ConvertToImage(); + img.SaveFile(filename); // can't use Bitmap::saveFile, it wants to know the file type + // but image.saveFile determines it automagicly +} + +Bitmap export_bitmap(const SetP& set, const CardP& card) { + // create viewer + DataViewer viewer; + viewer.setSet(set); + viewer.setCard(card); + // style to use + StyleSheetP style = set->stylesheetFor(card); + // size of cards + if (settings.stylesheetSettingsFor(*style).card_normal_export()) { + // TODO +// viewer.rotation.angle = 0; +// viewer.rotation.zoom = 1.0; + } + RealSize size = viewer.getRotation().getExternalRect().size(); + // create bitmap & dc + Bitmap bitmap(size.width, size.height); + if (!bitmap.Ok()) throw InternalError(_("Unable to create bitmap")); + wxMemoryDC dc; + dc.SelectObject(bitmap); + // draw + viewer.draw(dc); + dc.SelectObject(wxNullBitmap); + return bitmap; +} + +// ----------------------------------------------------------------------------- : Multiple card export diff --git a/src/data/format/mtg_editor.cpp b/src/data/format/mtg_editor.cpp index ff34d703..c3892a7e 100644 --- a/src/data/format/mtg_editor.cpp +++ b/src/data/format/mtg_editor.cpp @@ -192,7 +192,12 @@ SetP MtgEditorFileFormat::importSet(const String& filename) { // Load stylesheet if (layout != _("8e")) { - set->stylesheet = StyleSheet::byGameAndName(*set->game, _("old")); + try { + set->stylesheet = StyleSheet::byGameAndName(*set->game, _("old")); + } catch (const Error&) { + // If old style doesn't work try the new one + set->stylesheet = StyleSheet::byGameAndName(*set->game, _("new")); + } } else { set->stylesheet = StyleSheet::byGameAndName(*set->game, _("new")); } diff --git a/src/mse.vcproj b/src/mse.vcproj index 4d365cdc..c60dd6ee 100644 --- a/src/mse.vcproj +++ b/src/mse.vcproj @@ -1503,6 +1503,45 @@ + + + + + + + + + + + + + + + + + + + +