move inset related stuff from src/graphics to src/inset/

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4247 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2002-05-28 11:50:04 +00:00
parent 0af1698d3b
commit 551e3864c6
8 changed files with 124 additions and 99 deletions

View File

@ -1,3 +1,9 @@
2002-05-28 André Pönitz <poenitz@gmx.net>
* GraphicsParam.[Ch]:
move inset related stuff to inset/insetgraphics
2002-05-24 John Levon <moz@compsoc.man.ac.uk> 2002-05-24 John Levon <moz@compsoc.man.ac.uk>
* GraphicsImageXPM.C: ColorHandler moved * GraphicsImageXPM.C: ColorHandler moved

View File

@ -55,7 +55,7 @@ void GCache::update(InsetGraphics const & inset, string const & filepath)
// A subset only of InsetGraphicsParams is needed for display purposes. // A subset only of InsetGraphicsParams is needed for display purposes.
// The GraphicsParams c-tor also interrogates lyxrc to ascertain whether // The GraphicsParams c-tor also interrogates lyxrc to ascertain whether
// to display or not. // 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 // 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 // graphics files referenced by inset. If the name of this file is

View File

@ -631,7 +631,7 @@ struct Params_Changed {
bool operator()(InsetGraphics const * inset) bool operator()(InsetGraphics const * inset)
{ {
string const path = OnlyPath(p_.filename); string const path = OnlyPath(p_.filename);
return GParams(inset->params(), path) != p_; return inset->params().asGParams(path) != p_;
} }
private: private:
@ -669,7 +669,7 @@ ModifiedItemPtr ModifiedItem::changeDisplay()
ModifiedItemPtr new_item(new ModifiedItem(*this)); ModifiedItemPtr new_item(new ModifiedItem(*this));
new_item->insets = new_insets; 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(); new_item->setPixmap();
return new_item; return new_item;

View File

@ -13,107 +13,17 @@
#endif #endif
#include "GraphicsParams.h" #include "GraphicsParams.h"
#include "insets/insetgraphicsParams.h" #include "Lsstream.h"
#include "lyxrc.h"
#include "debug.h"
#include "support/filetools.h"
#include "support/lstrings.h"
#include "support/LAssert.h"
namespace grfx { namespace grfx {
GParams::GParams(InsetGraphicsParams const & iparams, string const & filepath) GParams::GParams()
: width(0), : width(0),
height(0), height(0),
scale(0), scale(0),
angle(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) bool operator==(GParams const & a, GParams const & b)

View File

@ -22,7 +22,6 @@
#include "LString.h" #include "LString.h"
#include "lyxlength.h" #include "lyxlength.h"
class InsetGraphicsParams;
namespace grfx { namespace grfx {
@ -49,7 +48,7 @@ bool operator!=(BoundingBox const &, BoundingBox const &);
struct GParams struct GParams
{ {
GParams(InsetGraphicsParams const &, string const &); GParams();
/// How is the image to be displayed on the LyX screen? /// How is the image to be displayed on the LyX screen?
enum DisplayType { enum DisplayType {

View File

@ -1,3 +1,8 @@
2002-05-28 André Pönitz <poenitz@gmx.net>
* insets/insetgraphicsParams.[Ch]:
put in inset related stuff from src/graphic
2002-05-26 John Levon <moz@compsoc.man.ac.uk> 2002-05-26 John Levon <moz@compsoc.man.ac.uk>
* inset.C: * inset.C:

View File

@ -23,6 +23,9 @@
#include "support/lyxlib.h" #include "support/lyxlib.h"
#include "support/LOstream.h" #include "support/LOstream.h"
#include "support/LAssert.h" #include "support/LAssert.h"
#include "support/lstrings.h"
#include "lyxrc.h"
#include "debug.h"
using std::ostream; using std::ostream;
@ -302,3 +305,100 @@ bool InsetGraphicsParams::Read(LyXLex & lex, string const & token)
} }
return true; 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;
}

View File

@ -22,6 +22,9 @@
#include "buffer.h" #include "buffer.h"
#include "lyxlex.h" #include "lyxlex.h"
#include "graphics/GraphicsParams.h"
/// This struct holds all the parameters needed by insetGraphics. /// This struct holds all the parameters needed by insetGraphics.
struct InsetGraphicsParams struct InsetGraphicsParams
{ {
@ -91,6 +94,8 @@ struct InsetGraphicsParams
void Write(std::ostream & os) const; void Write(std::ostream & os) const;
/// If the token belongs to our parameters, read it. /// If the token belongs to our parameters, read it.
bool Read(LyXLex & lex, string const & token); bool Read(LyXLex & lex, string const & token);
/// convert
grfx::GParams asGParams(string const & filepath) const;
private: private:
/// Initialize the object to a default status. /// Initialize the object to a default status.