From: Baruch Even Date: Thu, 8 Feb 2001 13:20:24 +0000 (+0000) Subject: Files I removed to remove and add from the former update. X-Git-Tag: 1.6.10~21655 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=5c867d5e0e1dc3740d1716d0931161ce48edca2d;p=features.git Files I removed to remove and add from the former update. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1458 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/graphics/EPS_Renderer.C b/src/graphics/EPS_Renderer.C deleted file mode 100644 index 82a2b12fc5..0000000000 --- a/src/graphics/EPS_Renderer.C +++ /dev/null @@ -1,60 +0,0 @@ -// -*- C++ -*- -/* This file is part of - * ================================================= - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich. - * Copyright 1995-2000 The LyX Team. - * - * This file Copyright 2000 Baruch Even - * ================================================= */ - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include -#include "EPS_Renderer.h" - -#include FORMS_H_LOCATION -#include -#include - -#include "support/LAssert.h" -#include "debug.h" - -using std::endl; -using std::ios; - - -EPS_Renderer::EPS_Renderer() - : Renderer() -{} - - -bool EPS_Renderer::renderImage() -{ - return false; -} - - -bool EPS_Renderer::isImageFormatOK(string const & filename) const -{ - std::ifstream is(filename.c_str()); - - // The signature of the file without the spaces. - static const char str[] = "%!PS"; - const char * ptr = str; - - do { - char c; - is >> c; - - if (c != *ptr) - return false; - - ++ptr; - } while (*ptr != '\0'); - - return true; -} diff --git a/src/graphics/EPS_Renderer.h b/src/graphics/EPS_Renderer.h deleted file mode 100644 index 7e36806743..0000000000 --- a/src/graphics/EPS_Renderer.h +++ /dev/null @@ -1,34 +0,0 @@ -// -*- C++ -*- -/* This file is part of - * ================================================= - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich. - * Copyright 1995-2000 The LyX Team. - * - * This file Copyright 2000 Baruch Even - * ================================================= */ - -#ifndef EPS_RENDERER_H -#define EPS_RENDERER_H - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "graphics/Renderer.h" - -/// -class EPS_Renderer : public Renderer { -public: - /// c-tor. - EPS_Renderer(); - - /// Load the EPS image and create a pixmap out of it. - virtual bool renderImage(); -private: - /// Verify that filename is really an EPS file. - virtual bool isImageFormatOK(string const & filename) const; -}; - -#endif diff --git a/src/graphics/ImageLoader.C b/src/graphics/ImageLoader.C new file mode 100644 index 0000000000..b874ef55b7 --- /dev/null +++ b/src/graphics/ImageLoader.C @@ -0,0 +1,74 @@ +// -*- C++ -*- +/* This file is part of + * ================================================= + * + * LyX, The Document Processor + * Copyright 1995 Matthias Ettrich. + * Copyright 1995-2000 The LyX Team. + * + * ================================================= */ + +#ifdef __GNUG__ +#pragma implementation +#endif + +#include +#include "ImageLoader.h" +#include "frontends/support/LyXImage.h" + +#include "support/filetools.h" + +ImageLoader::ImageLoader() + : image_(0) +{ +} + +ImageLoader::~ImageLoader() +{ + freeImage(); +} + +bool ImageLoader::isImageFormatOK(string const & /*filename*/) const +{ + return false; +} + +void ImageLoader::setImage(LyXImage * image) +{ + freeImage(); + + image_ = image; +} + +void ImageLoader::freeImage() +{ + delete image_; + image_ = 0; +} + +ImageLoader::FormatList const +ImageLoader::loadableFormats() const +{ + return FormatList(); +} + +ImageLoader::Result +ImageLoader::loadImage(string const & filename) +{ + // Make sure file exists and is readable. + if (! IsFileReadable(filename)) { + lyxerr << "No XPM file found." << endl; + return NoFile; + } + + // Verify that the file format is correct. + if (! isImageFormatOK(filename)) { + lyxerr << "File format incorrect." << endl; + return ImageFormatUnknown; + } + + freeImage(); + + return runImageLoader(filename); +} + diff --git a/src/graphics/ImageLoader.h b/src/graphics/ImageLoader.h new file mode 100644 index 0000000000..c96884ddc8 --- /dev/null +++ b/src/graphics/ImageLoader.h @@ -0,0 +1,77 @@ +// -*- C++ -*- +/* This file is part of + * ================================================= + * + * LyX, The Document Processor + * Copyright 1995 Matthias Ettrich. + * Copyright 1995-2000 The LyX Team. + * + * ================================================= */ + +#ifndef IMAGELOADER_H +#define IMAGELOADER_H + +#ifdef __GNUG__ +#pragma interface +#endif + +#include "LString.h" +#include "boost/utility.hpp" +#include + +class LyXImage; + +/** ImageLoader is a base class for all image loaders. An ImageLoader instance is + * platform dependent, and knows how to load some image formats into a memory + * representation (LyXImage). + * + * It may do the image loading asynchronously. + * + * @Author Baruch Even, + */ +class ImageLoader : public noncopyable { +public: + /// Errors that can be returned from this class. + enum Result { + OK = 0, + ImageFormatUnknown, // This loader doesn't know how to load this file. + NoFile, // File doesn't exists. + ErrorWhileLoading, // Unknown error when loading. + }; + + /// A list of supported formats. + typedef vector FormatList; + + /// c-tor. + ImageLoader(); + /// d-tor. + virtual ~ImageLoader(); + + /// Start loading the image file. + ImageLoader::Result loadImage(string const & filename); + + /// Get the last rendered pixmap. Returns 0 if no image is ready. + LyXImage * getImage() const { return image_; }; + + /// Return the list of loadable formats. + virtual FormatList const loadableFormats() const; + +protected: + /// Verify that the file is one that we can handle. + virtual bool isImageFormatOK(string const & filename) const = 0; + + /// Do the actual image loading. + virtual Result runImageLoader(string const & filename) = 0; + + /// Set the image that was loaded. + void setImage(LyXImage * image); + +private: + /// Free the loaded image. + void freeImage(); + + /// The loaded image. + LyXImage * image_; +}; + +#endif diff --git a/src/graphics/ImageLoaderXPM.C b/src/graphics/ImageLoaderXPM.C new file mode 100644 index 0000000000..87be5a1b1c --- /dev/null +++ b/src/graphics/ImageLoaderXPM.C @@ -0,0 +1,94 @@ +// -*- C++ -*- +/* This file is part of + * ================================================= + * + * LyX, The Document Processor + * Copyright 1995 Matthias Ettrich. + * Copyright 1995-2000 The LyX Team. + * + * ================================================= */ + +#ifdef __GNUG__ +#pragma implementation +#endif + +#include +#include "ImageLoaderXPM.h" +#include "frontends/support/LyXImage.h" +#include "support/filetools.h" + +#include FORMS_H_LOCATION +#include XPM_H_LOCATION +#include +#include + +#include "support/LAssert.h" +#include "debug.h" + +using std::endl; +using std::ios; + +bool ImageLoaderXPM::isImageFormatOK(string const & filename) const +{ + std::ifstream is(filename.c_str(), ios::in); + + // The signature of the file without the spaces. + static char const str[] = "/*XPM*/"; + char const * ptr = str; + + for (; *ptr != '\0'; ++ptr) { + char c; + is >> c; + + if (c != *ptr) + return false; + } + + return true; +} + +ImageLoaderXPM::FormatList const +ImageLoaderXPM::loadableFormats() const +{ + FormatList formats; + formats.push_back("xpm"); + + return formats; +} + +ImageLoader::Result +ImageLoaderXPM::runImageLoader(string const & filename) +{ + Display * display = fl_get_display(); + +//(BE 2000-08-05) +#warning This might be a dirty thing, but I dont know any other solution. + Screen * screen = ScreenOfDisplay(display, fl_screen); + + Pixmap pixmap; + Pixmap mask; + XpmAttributes attrib; + attrib.valuemask = 0; + + int status = XpmReadFileToPixmap( + display, + XRootWindowOfScreen(screen), + const_cast(filename.c_str()), + &pixmap, &mask, &attrib); + + if (status != XpmSuccess) { + lyxerr << "Error reading XPM file '" + << XpmGetErrorString(status) + << endl; + return ErrorWhileLoading; + } + + // This should have been set by the XpmReadFileToPixmap call! + Assert(attrib.valuemask & XpmSize); + + setImage(new LyXImage(pixmap, attrib.width, attrib.height)); + + XpmFreeAttributes(&attrib); + + return OK; +} diff --git a/src/graphics/ImageLoaderXPM.h b/src/graphics/ImageLoaderXPM.h new file mode 100644 index 0000000000..08c43b89d5 --- /dev/null +++ b/src/graphics/ImageLoaderXPM.h @@ -0,0 +1,43 @@ +// -*- C++ -*- +/* This file is part of + * ================================================= + * + * LyX, The Document Processor + * Copyright 1995 Matthias Ettrich. + * Copyright 1995-2000 The LyX Team. + * + * ================================================= */ + +#ifndef IMAGELOADER_XPM_H +#define IMAGELOADER_XPM_H + +#ifdef __GNUG__ +#pragma interface +#endif + +#include "graphics/ImageLoader.h" + +/** ImageLoaderXPM is an implementation of ImageLoader that can load XPM images by + * using libXPM. + * + * @Author Baruch Even, + */ +class ImageLoaderXPM : public ImageLoader { +public: + /// c-tor. + ImageLoaderXPM() {}; + /// d-tor. + virtual ~ImageLoaderXPM() {}; + + /// Return the list of loadable formats. + virtual FormatList const loadableFormats() const; + +protected: + /// Verify that the file is one that we can handle. + virtual bool isImageFormatOK(string const & filename) const; + + /// Do the actual image loading. + virtual ImageLoader::Result runImageLoader(string const & filename); +}; + +#endif diff --git a/src/graphics/Renderer.C b/src/graphics/Renderer.C deleted file mode 100644 index 91758ea35e..0000000000 --- a/src/graphics/Renderer.C +++ /dev/null @@ -1,91 +0,0 @@ -// -*- C++ -*- -/* This file is part of - * ================================================= - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich. - * Copyright 1995-2000 The LyX Team. - * - * This file Copyright 2000 Baruch Even - * ================================================= */ - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include -#include "Renderer.h" - -#include FORMS_H_LOCATION -#include "support/filetools.h" - -#include "frontends/support/LyXImage.h" - -Renderer::Renderer() - : width_(0), height_(0), pixmapLoaded_(false) -{} - -Renderer::~Renderer() -{ - freePixmap(); -} - -bool Renderer::setFilename(string const & filename) -{ - // Make sure file exists and is readable. - if (! IsFileReadable(filename)) { - return false; - } - - // Verify that the file format is correct. - if (! isImageFormatOK(filename)) { - return false; - } - - filename_ = filename; - return true; -} - -bool Renderer::renderImage() -{ - return false; -} - -bool Renderer::isImageFormatOK(string const & /*filename*/) const -{ - return false; -} - -void Renderer::setPixmap(LyXImage * pixmap, unsigned int width, unsigned int height) -{ - freePixmap(); - - pixmap_ = pixmap; - width_ = width; - height_ = height; - pixmapLoaded_ = true; -} - -LyXImage * Renderer::getPixmap() const -{ - return pixmap_; -} - -unsigned int Renderer::getWidth() const -{ return width_; } - -unsigned int Renderer::getHeight() const -{ - return height_; -} - -string const & Renderer::getFilename() const -{ - return filename_; -} - -void Renderer::freePixmap() -{ - if (pixmapLoaded_) - XFreePixmap(fl_get_display(), pixmap_->getPixmap()); -} diff --git a/src/graphics/Renderer.h b/src/graphics/Renderer.h deleted file mode 100644 index d7402d5392..0000000000 --- a/src/graphics/Renderer.h +++ /dev/null @@ -1,82 +0,0 @@ -// -*- C++ -*- -/* This file is part of - * ================================================= - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich. - * Copyright 1995-2000 The LyX Team. - * - * This file Copyright 2000 Baruch Even - * ================================================= */ - -#ifndef RENDERER_H -#define RENDERER_H - -#include - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "LString.h" -#include "X11/Xlib.h" -#include "boost/utility.hpp" - -class LyXImage; - -/** Renderer is a base class that is used to take an image format, and - * render it into a Pixmap in order to be able to display it later on - * in LyX. Essentially it's job is to load an image format and create - * a Pixmap from it. It also needs to do various transforms on the - * image, like Rotation, Resize and color reduction. - * - * @Author Baruch Even, - */ -class Renderer : public noncopyable { -public: - /// c-tor. - Renderer(); - /// d-tor. - virtual ~Renderer(); - - /// Set the filename that we will render - bool setFilename(string const & filename); - - /// Render the image, doing the necessary transforms. - virtual bool renderImage() = 0; - - /// Get the last rendered pixmap. - LyXImage * getPixmap() const; - - /// Get the width of the pixmap. - unsigned int getWidth() const; - - /// Get the height of the pixmap. - unsigned int getHeight() const; - -protected: - /// Verify that the file is one that we can handle. - virtual bool isImageFormatOK(string const & filename) const = 0; - - /// Set the pixmap. - void setPixmap(LyXImage * pixmap, unsigned int width, unsigned int height); - /// - string const & getFilename() const; - -private: - /// Free the loaded pixmap - void freePixmap(); - - /// The filename of the image file that we are responsible for. - string filename_; - /// The last rendered pixmap. - LyXImage * pixmap_; - /// The width of the rendered pixmap. - unsigned int width_; - /// The height of the rendered pixmap. - unsigned int height_; - /// is Pixmap ready? - bool pixmapLoaded_; -}; - -#endif diff --git a/src/graphics/XPM_Renderer.C b/src/graphics/XPM_Renderer.C deleted file mode 100644 index 9b55160228..0000000000 --- a/src/graphics/XPM_Renderer.C +++ /dev/null @@ -1,93 +0,0 @@ -// -*- C++ -*- -/* This file is part of - * ================================================= - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich. - * Copyright 1995-2000 The LyX Team. - * - * This file Copyright 2000 Baruch Even - * ================================================= */ - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include -#include "XPM_Renderer.h" -#include "frontends/support/LyXImage.h" - -#include FORMS_H_LOCATION -#include XPM_H_LOCATION -#include -#include - -#include "support/LAssert.h" -#include "debug.h" - -using std::endl; -using std::ios; - - -XPM_Renderer::XPM_Renderer() - : Renderer() -{} - - -bool XPM_Renderer::renderImage() -{ - Pixmap pixmap; - Pixmap mask; - XpmAttributes attrib; - attrib.valuemask = 0; - - Display * display = fl_get_display(); - -//(BE 2000-08-05) -//#warning This might be a dirty thing, but I dont know any other solution. - Screen * screen = ScreenOfDisplay(display, fl_screen); - - int status = XpmReadFileToPixmap( - display, - XRootWindowOfScreen(screen), - const_cast(getFilename().c_str()), - &pixmap, &mask, &attrib); - - if (status != XpmSuccess) { - lyxerr << "Error reading XPM file '" - << XpmGetErrorString(status) - << endl; - return false; - } - - // This should have been set by the XpmReadFileToPixmap call! - Assert(attrib.valuemask & XpmSize); - - setPixmap(new LyXImage(pixmap), attrib.width, attrib.height); - - XpmFreeAttributes(&attrib); - - return true; -} - - -bool XPM_Renderer::isImageFormatOK(string const & filename) const -{ - std::ifstream is(filename.c_str(), ios::in); - - // The signature of the file without the spaces. - static const char str[] = "/*XPM*/"; - const char * ptr = str; - - do { - char c; - is >> c; - - if (c != *ptr) - return false; - - ++ptr; - } while (*ptr != '\0'); - - return true; -} diff --git a/src/graphics/XPM_Renderer.h b/src/graphics/XPM_Renderer.h deleted file mode 100644 index a7b7b7bdf1..0000000000 --- a/src/graphics/XPM_Renderer.h +++ /dev/null @@ -1,35 +0,0 @@ -// -*- C++ -*- -/* This file is part of - * ================================================= - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich. - * Copyright 1995-2000 The LyX Team. - * - * This file Copyright 2000 Baruch Even - * ================================================= */ - -#ifndef XPM_RENDERER_H -#define XPM_RENDERER_H - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "graphics/Renderer.h" - -/// -class XPM_Renderer : public Renderer { -public: - /// c-tor. - XPM_Renderer(); - - /// Load the XPM image and create a pixmap out of it. - virtual bool renderImage(); - -private: - /// Verify that filename is really an XPM file. - virtual bool isImageFormatOK(string const & filename) const; -}; - -#endif