]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormMathsBitmap.h
fix crash with "save as"
[lyx.git] / src / frontends / xforms / FormMathsBitmap.h
index 4a3c6d07beba5b0976108092183f7ac183ea18a3..82f0e854220d0b618bfa723bc7e5acc209de1ba9 100644 (file)
@@ -1,39 +1,64 @@
 // -*- C++ -*-
 /**
  * \file FormMathsBitmap.h
- * Copyright 2001 the LyX Team
- * Read the file COPYING
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
  * \author Alejandro Aguilar Sierra
- * \author John Levon, moz@compsoc.man.ac.uk
- * \author Angus Leeming, a.leeming@ic.ac.uk
+ * \author John Levon
+ * \author Angus Leeming 
+ *
+ * Full author contact details are available in file CREDITS
  */
 
 #ifndef FORM_MATHSBITMAP_H
 #define FORM_MATHSBITMAP_H
 
-#include <vector>
-#include <boost/smart_ptr.hpp>
-
 #ifdef __GNUG__
 #pragma interface
 #endif
 
-#include "LString.h"
-#include "FormMathsPanel.h"
+#include "FormBase.h"
+#include <boost/shared_ptr.hpp>
+#include <vector>
+
+struct BitmapStore 
+{
+       BitmapStore(int nt_in, int nx_in, int ny_in, int bw_in, int bh_in,
+                   unsigned char const * data_in, bool vert_in)
+               : nt(nt_in), nx(nx_in), ny(ny_in), bw(bw_in), bh(bh_in),
+                 data(data_in), vert(vert_in)
+       {}
+
+       int nt;
+       int nx;
+       int ny;
+       int bw;
+       int bh;
+       unsigned char const * data;
+       bool vert;
+};
+
+
+struct FD_maths_bitmap 
+{
+       ~FD_maths_bitmap();
+       FL_FORM * form;
+       FL_OBJECT * button_close;
+};
+
 
-/** 
+/**
  * This class provides an XForms implementation of a maths bitmap form.
  */
-class FormMathsBitmap : public FormMathsSub {
-       friend class FormMathsPanel;
 
-  public:
-       ///
-       typedef boost::shared_ptr<FL_OBJECT> bm_ptr;
+class ControlMathSub;
+
+class FormMathsBitmap : public FormCB<ControlMathSub, FormDB<FD_maths_bitmap> >
+{
+public:
        ///
-       FormMathsBitmap(LyXView *, Dialogs * d, FormMathsPanel const &,
-                       std::vector<string> const &);
+       FormMathsBitmap(string const &, std::vector<string> const &);
        ///
        void addBitmap(int, int, int, int, int, unsigned char const *,
                       bool = true);
@@ -42,24 +67,27 @@ private:
        ///
        int GetIndex(FL_OBJECT *);
 
-       /// Build the dialog
-       virtual void build();
-       /// apply the data
+       ///
        virtual void apply();
-       /// input handler
-       bool input(FL_OBJECT *, long);
+       ///
+       virtual void build();
+       ///
+       virtual ButtonPolicy::SMInput input(FL_OBJECT *, long);
+       /// Not needed.
+       virtual void update() {}
 
-       /// Pointer to the actual instantiation of the xforms form
-       virtual FL_FORM * form() const;
+       ///
+       FL_OBJECT * buildBitmap(BitmapStore const & bmstore);
 
        /// The latex names associated with each symbol
        std::vector<string> latex_;
        /// The latex name chosen
        string latex_chosen_;
-       /// Real GUI implementation
-       FL_FORM * form_;
-       /// The bitmap tables
-       std::vector<bm_ptr> bitmaps_;
+
+       /** Temporary store for bitmap data passed to addBitmap()
+        *  but before the FL_OBJECT is created in build().
+        */
+       std::vector<BitmapStore> bitmaps_;
 
        /// Border width
        int ww_;