]> git.lyx.org Git - lyx.git/blobdiff - src/Floating.h
Do not compute metrics at each preview when loading file
[lyx.git] / src / Floating.h
index 2f0e5270f64e5a850bae047ed76a21536482f602..ab57c4dd94b174d891a10b281c601997fd15235b 100644 (file)
 // -*- C++ -*-
-/* This file is part of
- * ======================================================
+/**
+ * \file Floating.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- *           LyX, The Document Processor
+ * \author Lars Gullik Bjønnes
  *
- *           Copyright 1998-2001 The LyX Team.
- *
- * ======================================================
+ * Full author contact details are available in file CREDITS.
  */
 
 #ifndef FLOATING_H
 #define FLOATING_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include "support/strfwd.h"
+
+#include <string>
+
 
-#include "LString.h"
+namespace lyx {
 
 /** This is a "float layout" object. It contains the parameters for how to
   handle the different kinds of floats, default ones and user created ones.
   Objects of this class is stored in a container in FloatList. The different
   InsetFloat(s) have a pointer/reference through the name of the Floating
   so that it knows how the different floats should be handled.
-*/
*  handle the different kinds of floats, default ones and user created ones.
*  Objects of this class is stored in a container in FloatList. The different
*  InsetFloat(s) have a pointer/reference through the name of the Floating
*  so that it knows how the different floats should be handled.
+ */
 class Floating {
 public:
        ///
-       Floating();
+       Floating() : usesfloatpkg_(false), ispredefined_(false),
+           allowswide_(true), allowssideways_(true) {}
+       ///
+       Floating(std::string const & type, std::string const & placement,
+                std::string const & ext, std::string const & within,
+                std::string const & style, std::string const & name,
+                std::string const & listName, std::string const & listCmd,
+                std::string const & refPrefix, std::string const & allowedplacement,
+                std::string const & htmlTag, std::string const & htmlAttrib,
+                docstring const & htmlStyle, std::string const & docbookTag,
+                std::string const & docbookAttr, std::string const & docbookTagType,
+                std::string const & docbookFloatType, std::string const & docbookCaption,
+                std::string const & required, bool usesfloat, bool ispredefined,
+                bool allowswide, bool allowssideways);
+       ///
+       std::string const & floattype() const { return floattype_; }
        ///
-       Floating(string const & type, string const & placement,
-                string const & ext, string const & within,
-                string const & style, string const & name,
-                bool builtin = false);
+       std::string docbookFloatType() const;
        ///
-       string const & type() const;
+       std::string const & placement() const { return placement_; }
        ///
-       string const & placement() const;
+       std::string const & ext() const {return ext_; }
        ///
-       string const & ext() const;
+       std::string const & within() const { return within_; }
        ///
-       string const & within() const;
+       std::string const & style() const { return style_; }
        ///
-       string const & style() const;
+       std::string const & name() const { return name_; }
+       /// the title of a list of this kind of float
+       std::string const & listName() const { return listname_; }
+       /// the command used to generate that list. this has to be given
+       /// if usesFloatPkg() is false, unless this float uses the same
+       /// auxfile as another defined previously. this should not contain
+       /// the leading "\".
+       std::string const & listCommand() const { return listcommand_; }
+       /// prefix to use for formatted references to such floats
+       std::string const & refPrefix() const { return refprefix_; }
+       /// allowed placement options
+       std::string const & allowedPlacement() const { return allowedplacement_; }
        ///
-       string const & name() const;
+       bool usesFloatPkg() const { return usesfloatpkg_; }
+       /// allowed placement options
+       std::string const & required() const { return required_; }
        ///
-       bool builtin() const;
+       bool isPredefined() const { return ispredefined_; }
+       ///
+       bool allowsWide() const { return allowswide_; }
+       ///
+       bool allowsSideways() const { return allowssideways_; }
+       /// style information, for preamble
+       docstring const & htmlStyle() const { return html_style_; }
+       /// class, for css, defaults to "float-" + type()
+       std::string const & htmlAttrib() const;
+       /// tag type, defaults to "div"
+       std::string const & htmlTag() const;
+       ///
+       std::string docbookTag(bool hasTitle = false) const;
+       ///
+       std::string docbookAttr() const;
+       ///
+       std::string const & docbookTagType() const;
+       ///
+       std::string const & docbookCaption() const;
 private:
        ///
-       string type_;
+       std::string defaultCSSClass() const;
+       ///
+       std::string floattype_;
        ///
-       string placement_;
+       std::string placement_;
        ///
-       string ext_;
+       std::string ext_;
        ///
-       string within_;
+       std::string within_;
        ///
-       string style_;
+       std::string style_;
        ///
-       string name_;
+       std::string name_;
        ///
-       bool builtin_;
+       std::string listname_;
+       ///
+       std::string listcommand_;
+       ///
+       std::string refprefix_;
+       ///
+       std::string allowedplacement_;
+       ///
+       std::string required_;
+       ///
+       bool usesfloatpkg_;
+       ///
+       bool ispredefined_;
+       ///
+       bool allowswide_;
+       ///
+       bool allowssideways_;
+       ///
+       mutable std::string html_tag_;
+       ///
+       mutable std::string html_attrib_;
+       ///
+       mutable std::string defaultcssclass_;
+       ///
+       docstring html_style_;
+       // There is no way to override the DocBook tag based on the layouts: half of it is determined by whether the float
+       // has a title or not, an information that is not available in the layouts.
+       /// attribute (mostly, role)
+       mutable std::string docbook_caption_;
+       /// float tag
+       std::string docbook_tag_;
+       /// attributes for the float tag
+       std::string docbook_attr_;
+       /// DocBook tag type (block, paragraph, inline)
+       mutable std::string docbook_tag_type_;
+       /// DocBook float type, to override float_type_ (figure, table, algorithm, video)
+       std::string docbook_float_type_;
 };
 
+
+} // namespace lyx
+
 #endif