X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetGraphicsParams.cpp;h=e158e81d98546d4af50a3fee97acbc053b738d91;hb=1f0305509b99681885958c03f8d8f04c1564c84c;hp=16130e7c6a1c73977a98945479d4337c58380558;hpb=6dc7cbe1e7b56b007700346731655b8e4175e3c1;p=lyx.git diff --git a/src/insets/InsetGraphicsParams.cpp b/src/insets/InsetGraphicsParams.cpp index 16130e7c6a..e158e81d98 100644 --- a/src/insets/InsetGraphicsParams.cpp +++ b/src/insets/InsetGraphicsParams.cpp @@ -4,7 +4,7 @@ * Licence details can be found in the file COPYING. * * \author Baruch Even - * \author Herbert Voß + * \author Herbert Voß * * Full author contact details are available in file CREDITS. */ @@ -13,17 +13,16 @@ #include "InsetGraphicsParams.h" +#include "Buffer.h" #include "LyX.h" // for use_gui #include "Lexer.h" #include "LyXRC.h" -#include "Buffer.h" -#include "graphics/GraphicsParams.h" +#include "graphics/epstools.h" #include "graphics/GraphicsTypes.h" #include "support/convert.h" #include "support/debug.h" -#include "support/filetools.h" #include "support/lyxlib.h" #include "support/lstrings.h" #include "support/Translator.h" @@ -51,12 +50,13 @@ InsetGraphicsParams::InsetGraphicsParams(InsetGraphicsParams const & igp) } -void InsetGraphicsParams::operator=(InsetGraphicsParams const & params) +InsetGraphicsParams & InsetGraphicsParams::operator=(InsetGraphicsParams const & params) { // Are we assigning the object into itself? if (this == ¶ms) - return; + return *this; copy(params); + return *this; } @@ -64,21 +64,21 @@ void InsetGraphicsParams::init() { filename.erase(); lyxscale = 100; // lyx scaling in percentage - display = graphics::DefaultDisplay; // display mode; see preferences + display = true; // may be overriden by display mode in preferences scale = string("100"); // output scaling in percentage width = Length(); height = Length(); keepAspectRatio = false; // for LaTeX output draft = false; // draft mode - noUnzip = false; // unzip files scaleBeforeRotation = false; // scale image before rotating - bb = string(); // bounding box + bbox = graphics::BoundingBox(); // bounding box clip = false; // clip image rotateAngle = "0"; // angle of rotation in degrees rotateOrigin.erase(); // Origin of rotation special.erase(); // additional userdefined stuff + groupId.clear(); } @@ -92,15 +92,15 @@ void InsetGraphicsParams::copy(InsetGraphicsParams const & igp) height = igp.height; keepAspectRatio = igp.keepAspectRatio; draft = igp.draft; - noUnzip = igp.noUnzip; scaleBeforeRotation = igp.scaleBeforeRotation; - bb = igp.bb; + bbox = igp.bbox; clip = igp.clip; rotateAngle = igp.rotateAngle; rotateOrigin = igp.rotateOrigin; special = igp.special; + groupId = igp.groupId; } @@ -115,15 +115,15 @@ bool operator==(InsetGraphicsParams const & left, left.height == right.height && left.keepAspectRatio == right.keepAspectRatio && left.draft == right.draft && - left.noUnzip == right.noUnzip && left.scaleBeforeRotation == right.scaleBeforeRotation && - left.bb == right.bb && + left.bbox == right.bbox && left.clip == right.clip && left.rotateAngle == right.rotateAngle && left.rotateOrigin == right.rotateOrigin && - left.special == right.special; + left.special == right.special && + left.groupId == right.groupId; } @@ -137,14 +137,12 @@ bool operator!=(InsetGraphicsParams const & left, void InsetGraphicsParams::Write(ostream & os, Buffer const & buffer) const { // Do not write the default values - if (!filename.empty()) { - os << "\tfilename " << filename.outputFilename(buffer.filePath()) << '\n'; - os << "\tembed " << (filename.embedded() ? filename.inzipName() : "\"\"") << '\n'; - } + if (!filename.empty()) + os << "\tfilename " << filename.outputFileName(buffer.filePath()) << '\n'; if (lyxscale != 100) os << "\tlyxscale " << lyxscale << '\n'; - if (display != graphics::DefaultDisplay) - os << "\tdisplay " << graphics::displayTranslator().find(display) << '\n'; + if (!display) + os << "\tdisplay false\n"; if (!scale.empty() && !float_equal(convert(scale), 0.0, 0.05)) { if (!float_equal(convert(scale), 100.0, 0.05)) os << "\tscale " << scale << '\n'; @@ -159,13 +157,11 @@ void InsetGraphicsParams::Write(ostream & os, Buffer const & buffer) const os << "\tkeepAspectRatio\n"; if (draft) // draft mode os << "\tdraft\n"; - if (noUnzip) - os << "\tnoUnzip\n"; if (scaleBeforeRotation) os << "\tscaleBeforeRotation\n"; - if (!bb.empty()) // bounding box - os << "\tBoundingBox " << bb << '\n'; + if (!bbox.empty()) // bounding box + os << "\tBoundingBox " << bbox << '\n'; if (clip) // clip image os << "\tclip\n"; @@ -176,6 +172,8 @@ void InsetGraphicsParams::Write(ostream & os, Buffer const & buffer) const os << "\trotateOrigin " << rotateOrigin << '\n'; if (!special.empty()) os << "\tspecial " << special << '\n'; + if (!groupId.empty()) + os << "\tgroupId "<< groupId << '\n'; } @@ -184,18 +182,13 @@ bool InsetGraphicsParams::Read(Lexer & lex, string const & token, string const & if (token == "filename") { lex.eatLine(); filename.set(lex.getString(), bufpath); - } else if (token == "embed") { - lex.next(); - string const name = lex.getString(); - filename.setInzipName(name); - filename.setEmbed(!name.empty()); } else if (token == "lyxscale") { lex.next(); lyxscale = lex.getInteger(); } else if (token == "display") { lex.next(); string const type = lex.getString(); - display = graphics::displayTranslator().find(type); + display = lex.getString() != "false"; } else if (token == "scale") { lex.next(); scale = lex.getString(); @@ -211,18 +204,17 @@ bool InsetGraphicsParams::Read(Lexer & lex, string const & token, string const & keepAspectRatio = true; } else if (token == "draft") { draft = true; - } else if (token == "noUnzip") { - noUnzip = true; } else if (token == "scaleBeforeRotation") { scaleBeforeRotation = true; } else if (token == "BoundingBox") { - bb.erase(); - for (int i = 0; i < 4; ++i) { - if (i != 0) - bb += ' '; - lex.next(); - bb += lex.getString(); - } + lex.next(); + bbox.xl = Length(lex.getString()); + lex.next(); + bbox.yb = Length(lex.getString()); + lex.next(); + bbox.xr = Length(lex.getString()); + lex.next(); + bbox.yt = Length(lex.getString()); } else if (token == "clip") { clip = true; } else if (token == "rotateAngle") { @@ -234,6 +226,9 @@ bool InsetGraphicsParams::Read(Lexer & lex, string const & token, string const & } else if (token == "special") { lex.eatLine(); special = lex.getString(); + } else if (token == "groupId") { + lex.eatLine(); + groupId = lex.getString(); // catch and ignore following two old-format tokens and their arguments. // e.g. "size_kind scale" clashes with the setting of the @@ -253,65 +248,59 @@ bool InsetGraphicsParams::Read(Lexer & lex, string const & token, string const & graphics::Params InsetGraphicsParams::as_grfxParams() const { graphics::Params pars; - pars.filename = filename.availableFile(); - pars.icon = filename.embedded() ? "pin.png" : ""; + pars.filename = filename; pars.scale = lyxscale; pars.angle = convert(rotateAngle); if (clip) { - pars.bb = bb; + pars.bb = bbox; // Get the original Bounding Box from the file - string const tmp = readBB_from_PSFile(filename); + string const tmp = graphics::readBB_from_PSFile(filename); LYXERR(Debug::GRAPHICS, "BB_from_File: " << tmp); if (!tmp.empty()) { - // FIXME: why not convert to unsigned int? (Lgb) - unsigned int const bb_orig_xl = convert(token(tmp, ' ', 0)); - unsigned int const bb_orig_yb = convert(token(tmp, ' ', 1)); + unsigned int const bb_orig_xl = convert(token(tmp, ' ', 0)); + unsigned int const bb_orig_yb = convert(token(tmp, ' ', 1)); // new pars.bb values must be >= zero - if (pars.bb.xl > bb_orig_xl) - pars.bb.xl -= bb_orig_xl; + if (pars.bb.xl.inBP() > static_cast(bb_orig_xl)) + pars.bb.xl = Length(pars.bb.xl.inBP() - bb_orig_xl, Length::BP); else - pars.bb.xl = 0; + pars.bb.xl = Length(); - if (pars.bb.xr > bb_orig_xl) - pars.bb.xr -= bb_orig_xl; + if (pars.bb.xr.inBP() > static_cast(bb_orig_xl)) + pars.bb.xr = Length(pars.bb.xr.inBP() - bb_orig_xl, Length::BP); else - pars.bb.xr = 0; + pars.bb.xr = Length(); - if (pars.bb.yb > bb_orig_yb) - pars.bb.yb -= bb_orig_yb; + if (pars.bb.yb.inBP() > static_cast(bb_orig_yb)) + pars.bb.yb = Length(pars.bb.yb.inBP() - bb_orig_yb, Length::BP); else - pars.bb.yb = 0; + pars.bb.yb = Length(); - if (pars.bb.yt > bb_orig_yb) - pars.bb.yt -= bb_orig_yb; + if (pars.bb.yt.inBP() > static_cast(bb_orig_yb)) + pars.bb.yt = Length(pars.bb.yt.inBP() - bb_orig_yb, Length::BP); else - pars.bb.yt = 0; + pars.bb.yt = Length(); } // Paranoia check. - int const width = pars.bb.xr - pars.bb.xl; - int const height = pars.bb.yt - pars.bb.yb; + int const width = pars.bb.xr.inBP() - pars.bb.xl.inBP(); + int const height = pars.bb.yt.inBP() - pars.bb.yb.inBP(); if (width < 0 || height < 0) { - pars.bb.xl = 0; - pars.bb.xr = 0; - pars.bb.yb = 0; - pars.bb.yt = 0; + pars.bb.xl = Length(); + pars.bb.xr = Length(); + pars.bb.yb = Length(); + pars.bb.yt = Length(); } } - if (display == graphics::DefaultDisplay) { - pars.display = graphics::DisplayType(lyxrc.display_graphics); - } else { - pars.display = display; - } + pars.display = display; // Override the above if we're not using a gui if (!use_gui) - pars.display = graphics::NoDisplay; + pars.display = false; return pars; }