Would anybody mind if I moved the InsetGraphics related stuff from src/graphics to insets/insetGraphics*?
Like I started to do in the attached patch? [Not perfect, I know. Just moving things around for starters] Goal is better separation of functionality and possible code re-use for the preview stuff. Andre' -- Those who desire to give up Freedom in order to gain Security, will not have, nor do they deserve, either one. (T. Jefferson)
Index: graphics/GraphicsCache.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/graphics/GraphicsCache.C,v retrieving revision 1.24 diff -u -p -r1.24 GraphicsCache.C --- graphics/GraphicsCache.C 19 Apr 2002 09:17:05 -0000 1.24 +++ graphics/GraphicsCache.C 28 May 2002 10:19:32 -0000 @@ -55,7 +55,7 @@ void GCache::update(InsetGraphics const // A subset only of InsetGraphicsParams is needed for display purposes. // The GraphicsParams c-tor also interrogates lyxrc to ascertain whether // to display or not. - GParams params(inset.params(), filepath); + GParams params = inset.params().asGParams(filepath); // Each inset can reference only one file, so check the cache for any // graphics files referenced by inset. If the name of this file is Index: graphics/GraphicsCacheItem.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/graphics/GraphicsCacheItem.C,v retrieving revision 1.33 diff -u -p -r1.33 GraphicsCacheItem.C --- graphics/GraphicsCacheItem.C 16 Apr 2002 12:43:42 -0000 1.33 +++ graphics/GraphicsCacheItem.C 28 May 2002 10:19:32 -0000 @@ -631,7 +631,7 @@ struct Params_Changed { bool operator()(InsetGraphics const * inset) { string const path = OnlyPath(p_.filename); - return GParams(inset->params(), path) != p_; + return inset->params().asGParams(path) != p_; } private: @@ -669,7 +669,7 @@ ModifiedItemPtr ModifiedItem::changeDisp ModifiedItemPtr new_item(new ModifiedItem(*this)); new_item->insets = new_insets; - *(new_item->p_) = GParams((*new_insets.begin())->params(), path); + *(new_item->p_) = (*new_insets.begin())->params().asGParams(path); new_item->setPixmap(); return new_item; Index: graphics/GraphicsParams.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/graphics/GraphicsParams.C,v retrieving revision 1.13 diff -u -p -r1.13 GraphicsParams.C --- graphics/GraphicsParams.C 1 May 2002 11:12:02 -0000 1.13 +++ graphics/GraphicsParams.C 28 May 2002 10:19:32 -0000 @@ -13,107 +13,17 @@ #endif #include "GraphicsParams.h" -#include "insets/insetgraphicsParams.h" -#include "lyxrc.h" -#include "debug.h" -#include "support/filetools.h" -#include "support/lstrings.h" -#include "support/LAssert.h" +#include "Lsstream.h" + namespace grfx { -GParams::GParams(InsetGraphicsParams const & iparams, string const & filepath) +GParams::GParams() : width(0), height(0), scale(0), angle(0) -{ - filename = iparams.filename; - if (!filepath.empty()) { - filename = MakeAbsPath(filename, filepath); - } - - if (iparams.clip) { - bb = iparams.bb; - - // Get the original Bounding Box from the file - string const tmp = readBB_from_PSFile(filename); - lyxerr[Debug::GRAPHICS] << "BB_from_File: " << tmp << std::endl; - if (!tmp.empty()) { - int const bb_orig_xl = strToInt(token(tmp, ' ', 0)); - int const bb_orig_yb = strToInt(token(tmp, ' ', 1)); - - bb.xl -= bb_orig_xl; - bb.xr -= bb_orig_xl; - bb.yb -= bb_orig_yb; - bb.yt -= bb_orig_yb; - } - - bb.xl = std::max(0, bb.xl); - bb.xr = std::max(0, bb.xr); - bb.yb = std::max(0, bb.yb); - bb.yt = std::max(0, bb.yt); - - // Paranoia check. - int const width = bb.xr - bb.xl; - int const height = bb.yt - bb.yb; - - if (width < 0 || height < 0) { - bb.xl = 0; - bb.xr = 0; - bb.yb = 0; - bb.yt = 0; - } - } - - if (iparams.rotate) - angle = int(iparams.rotateAngle); - - if (iparams.display == InsetGraphicsParams::DEFAULT) { - - if (lyxrc.display_graphics == "mono") - display = MONOCHROME; - else if (lyxrc.display_graphics == "gray") - display = GRAYSCALE; - else if (lyxrc.display_graphics == "color") - display = COLOR; - else - display = NONE; - - } else if (iparams.display == InsetGraphicsParams::NONE) { - display = NONE; - - } else if (iparams.display == InsetGraphicsParams::MONOCHROME) { - display = MONOCHROME; - - } else if (iparams.display == InsetGraphicsParams::GRAYSCALE) { - display = GRAYSCALE; - - } else if (iparams.display == InsetGraphicsParams::COLOR) { - display = COLOR; - } - - // Override the above if we're not using a gui - if (!lyxrc.use_gui) { - display = NONE; - } - - if (iparams.lyxsize_type == InsetGraphicsParams::SCALE) { - scale = iparams.lyxscale; - - } else if (iparams.lyxsize_type == InsetGraphicsParams::WH) { - if (!iparams.lyxwidth.zero()) - width = iparams.lyxwidth.inPixels(1, 1); - if (!iparams.lyxheight.zero()) - height = iparams.lyxheight.inPixels(1, 1); - - // inPixels returns a value scaled by lyxrc.zoom. - // We want, therefore, to undo this. - double const scaling_factor = 100.0 / double(lyxrc.zoom); - width = uint(scaling_factor * width); - height = uint(scaling_factor * height); - } -} +{} bool operator==(GParams const & a, GParams const & b) Index: graphics/GraphicsParams.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/graphics/GraphicsParams.h,v retrieving revision 1.6 diff -u -p -r1.6 GraphicsParams.h --- graphics/GraphicsParams.h 8 Apr 2002 16:51:46 -0000 1.6 +++ graphics/GraphicsParams.h 28 May 2002 10:19:32 -0000 @@ -22,7 +22,6 @@ #include "LString.h" #include "lyxlength.h" -class InsetGraphicsParams; namespace grfx { @@ -49,7 +48,7 @@ bool operator!=(BoundingBox const &, Bou struct GParams { - GParams(InsetGraphicsParams const &, string const &); + GParams(); /// How is the image to be displayed on the LyX screen? enum DisplayType { Index: insets/insetgraphicsParams.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetgraphicsParams.C,v retrieving revision 1.37 diff -u -p -r1.37 insetgraphicsParams.C --- insets/insetgraphicsParams.C 23 May 2002 09:21:28 -0000 1.37 +++ insets/insetgraphicsParams.C 28 May 2002 10:19:32 -0000 @@ -23,6 +23,9 @@ #include "support/lyxlib.h" #include "support/LOstream.h" #include "support/LAssert.h" +#include "support/lstrings.h" +#include "lyxrc.h" +#include "debug.h" using std::ostream; @@ -301,4 +304,101 @@ bool InsetGraphicsParams::Read(LyXLex & return false; } return true; +} + + +grfx::GParams InsetGraphicsParams::asGParams(string const & filepath) const +{ + grfx::GParams pars; + pars.width = 0; + pars.height = 0; + pars.scale = 0; + pars.angle = 0; + pars.filename = filename; + + if (!filepath.empty()) { + pars.filename = MakeAbsPath(pars.filename, filepath); + } + + if (clip) { + pars.bb = bb; + + // Get the original Bounding Box from the file + string const tmp = readBB_from_PSFile(filename); + lyxerr[Debug::GRAPHICS] << "BB_from_File: " << tmp << std::endl; + if (!tmp.empty()) { + int const bb_orig_xl = strToInt(token(tmp, ' ', 0)); + int const bb_orig_yb = strToInt(token(tmp, ' ', 1)); + + pars.bb.xl -= bb_orig_xl; + pars.bb.xr -= bb_orig_xl; + pars.bb.yb -= bb_orig_yb; + pars.bb.yt -= bb_orig_yb; + } + + pars.bb.xl = std::max(0, pars.bb.xl); + pars.bb.xr = std::max(0, pars.bb.xr); + pars.bb.yb = std::max(0, pars.bb.yb); + pars.bb.yt = std::max(0, pars.bb.yt); + + // Paranoia check. + int const width = pars.bb.xr - pars.bb.xl; + int const height = pars.bb.yt - pars.bb.yb; + + if (width < 0 || height < 0) { + pars.bb.xl = 0; + pars.bb.xr = 0; + pars.bb.yb = 0; + pars.bb.yt = 0; + } + } + + if (rotate) + pars.angle = int(rotateAngle); + + if (display == InsetGraphicsParams::DEFAULT) { + + if (lyxrc.display_graphics == "mono") + pars.display = grfx::GParams::MONOCHROME; + else if (lyxrc.display_graphics == "gray") + pars.display = grfx::GParams::GRAYSCALE; + else if (lyxrc.display_graphics == "color") + pars.display = grfx::GParams::COLOR; + else + pars.display = grfx::GParams::NONE; + + } else if (display == InsetGraphicsParams::NONE) { + pars.display = grfx::GParams::NONE; + + } else if (display == InsetGraphicsParams::MONOCHROME) { + pars.display = grfx::GParams::MONOCHROME; + + } else if (display == InsetGraphicsParams::GRAYSCALE) { + pars.display = grfx::GParams::GRAYSCALE; + + } else if (display == InsetGraphicsParams::COLOR) { + pars.display = grfx::GParams::COLOR; + } + + // Override the above if we're not using a gui + if (!lyxrc.use_gui) { + pars.display = grfx::GParams::NONE; + } + + if (lyxsize_type == InsetGraphicsParams::SCALE) { + pars.scale = lyxscale; + + } else if (lyxsize_type == InsetGraphicsParams::WH) { + if (!lyxwidth.zero()) + pars.width = lyxwidth.inPixels(1, 1); + if (!lyxheight.zero()) + pars.height = lyxheight.inPixels(1, 1); + + // inPixels returns a value scaled by lyxrc.zoom. + // We want, therefore, to undo this. + double const scaling_factor = 100.0 / double(lyxrc.zoom); + pars.width = uint(scaling_factor * pars.width); + pars.height = uint(scaling_factor * pars.height); + } + return pars; } Index: insets/insetgraphicsParams.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetgraphicsParams.h,v retrieving revision 1.19 diff -u -p -r1.19 insetgraphicsParams.h --- insets/insetgraphicsParams.h 1 May 2002 10:23:51 -0000 1.19 +++ insets/insetgraphicsParams.h 28 May 2002 10:19:32 -0000 @@ -22,6 +22,9 @@ #include "buffer.h" #include "lyxlex.h" +#include "graphics/GraphicsParams.h" + + /// This struct holds all the parameters needed by insetGraphics. struct InsetGraphicsParams { @@ -91,6 +94,8 @@ struct InsetGraphicsParams void Write(std::ostream & os) const; /// If the token belongs to our parameters, read it. bool Read(LyXLex & lex, string const & token); + /// convert + grfx::GParams asGParams(string const & filepath) const; private: /// Initialize the object to a default status.