mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
(Herbert): discover the "Bounding Box" of non-(e)ps graphics files, and
use it in the graphics dialog. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3973 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
c9a31728e9
commit
b95a56f37a
@ -1,3 +1,7 @@
|
||||
2002-04-11 Herbert Voss <voss@perce.de>
|
||||
|
||||
* ControlGraphics.C: read BoundingBox also from non (e)ps files.
|
||||
|
||||
2002-04-08 Adrien Rebollo <adrien.rebollo@gmx.fr>
|
||||
|
||||
* ControlAboutlyx.C (getVersion): two _() forgotten
|
||||
|
@ -23,6 +23,9 @@
|
||||
#include "ButtonControllerBase.h"
|
||||
#include "ControlGraphics.h"
|
||||
#include "ControlInset.tmpl"
|
||||
|
||||
#include "helper_funcs.h"
|
||||
|
||||
#include "buffer.h"
|
||||
#include "BufferView.h"
|
||||
#include "Dialogs.h"
|
||||
@ -30,18 +33,20 @@
|
||||
#include "gettext.h"
|
||||
#include "lyxrc.h"
|
||||
|
||||
#include "insets/insetgraphics.h"
|
||||
#include "insets/insetgraphicsParams.h" // need operator!=()
|
||||
#include "graphics/GraphicsCache.h"
|
||||
|
||||
#include "insets/insetgraphics.h"
|
||||
#include "insets/insetgraphicsParams.h"
|
||||
|
||||
#include "support/FileInfo.h" // for FileInfo
|
||||
#include "helper_funcs.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "support/filetools.h" // for AddName, zippedFile
|
||||
#include "support/filetools.h"
|
||||
#include "support/FileInfo.h"
|
||||
|
||||
|
||||
using std::pair;
|
||||
using std::make_pair;
|
||||
using std::ifstream;
|
||||
|
||||
|
||||
ControlGraphics::ControlGraphics(LyXView & lv, Dialogs & d)
|
||||
: ControlInset<InsetGraphics, InsetGraphicsParams>(lv, d)
|
||||
{
|
||||
@ -104,7 +109,18 @@ string const ControlGraphics::Browse(string const & in_name)
|
||||
|
||||
string const ControlGraphics::readBB(string const & file)
|
||||
{
|
||||
return readBB_from_PSFile(MakeAbsPath(file, lv_.buffer()->filePath()));
|
||||
string const abs_file = MakeAbsPath(file, lv_.buffer()->filePath());
|
||||
|
||||
string const from = getExtFromContents(abs_file);
|
||||
// Check if we have a Postscript file, then it's easy
|
||||
if (contains(from, "ps"))
|
||||
return readBB_from_PSFile(abs_file);
|
||||
|
||||
// we don't, so ask the Graphics Cache if it has loaded the file
|
||||
grfx::GCache & gc = grfx::GCache::get();
|
||||
return ("0 0 " +
|
||||
tostr(gc.raw_width(abs_file)) + ' ' +
|
||||
tostr(gc.raw_height(abs_file)));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
2002-04-10 Herbert Voss <voss@perce.de>
|
||||
|
||||
* GraphicsCache.[Ch]:
|
||||
* GraphicsCacheItem.[Ch]: add width/height functions from Angus
|
||||
to read the "Bounding Box" from non (e)ps files.
|
||||
|
||||
2002-04-08 Angus Leeming <a.leeming@ic.ac.uk>
|
||||
|
||||
* GraphicsParams.C (c-tor): if clipping, then check the Bounding Box of
|
||||
|
@ -165,4 +165,25 @@ GCache::find(InsetGraphics const & inset) const
|
||||
return cache->end();
|
||||
}
|
||||
|
||||
|
||||
unsigned int GCache::raw_width(string const & filename) const
|
||||
{
|
||||
CacheType::const_iterator it = cache->find(filename);
|
||||
if (it == cache->end())
|
||||
return 0;
|
||||
|
||||
return it->second->raw_width();
|
||||
}
|
||||
|
||||
|
||||
unsigned int GCache::raw_height(string const & filename) const
|
||||
{
|
||||
CacheType::const_iterator it = cache->find(filename);
|
||||
if (it == cache->end())
|
||||
return 0;
|
||||
|
||||
return it->second->raw_height();
|
||||
}
|
||||
|
||||
} // namespace grfx
|
||||
|
||||
|
@ -67,6 +67,11 @@ public:
|
||||
/// How far have we got in loading the image?
|
||||
ImageStatus status(InsetGraphics const &) const;
|
||||
|
||||
// Used to ascertain the Bounding Box of non (e)ps files.
|
||||
unsigned int raw_width(string const & filename) const;
|
||||
///
|
||||
unsigned int raw_height(string const & filename) const;
|
||||
|
||||
private:
|
||||
/** Make the c-tor private so we can control how many objects
|
||||
* are instantiated.
|
||||
|
@ -392,6 +392,24 @@ void GCacheItem::imageLoaded(bool success)
|
||||
}
|
||||
|
||||
|
||||
unsigned int GCacheItem::raw_width() const
|
||||
{
|
||||
if (!image_.get())
|
||||
return 0;
|
||||
|
||||
return image_->getWidth();
|
||||
}
|
||||
|
||||
|
||||
unsigned int GCacheItem::raw_height() const
|
||||
{
|
||||
if (!image_.get())
|
||||
return 0;
|
||||
|
||||
return image_->getHeight();
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
string const findTargetFormat(string const & from)
|
||||
|
@ -89,6 +89,11 @@ public:
|
||||
*/
|
||||
void changeDisplay(bool changed_background);
|
||||
|
||||
/// Used to ascertain the Bounding Box of non (e)ps files.
|
||||
unsigned int raw_width() const;
|
||||
///
|
||||
unsigned int raw_height() const;
|
||||
|
||||
private:
|
||||
/** Start the image conversion process, checking first that it is
|
||||
* necessary. If it is necessary, then a conversion task is started.
|
||||
|
Loading…
Reference in New Issue
Block a user