home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / dreamscape / source / Dreamscape / Headers / objects / window / h / basewindow next >
Encoding:
Text File  |  1996-09-22  |  2.9 KB  |  97 lines

  1.  
  2. // objects.window.h.basewindow
  3.  
  4. // Dreamscape - C++ class library for RISC OS
  5. // Copyright (c) 1996 Mark Seaborn <mseaborn@argonet.co.uk>
  6. //
  7. // This library is free software; you can redistribute it and/or
  8. // modify it under the terms of the GNU Library General Public
  9. // License as published by the Free Software Foundation; either
  10. // version 2 of the License, or (at your option) any later version.
  11. // See the Dreamscape documentation for more information.
  12.  
  13. #ifndef dreamscape_basewindow_H
  14. #define dreamscape_basewindow_H
  15.  
  16. #include "tboxobj.h"
  17.  
  18. class Window;
  19. typedef struct wimp_w_ *wimp_w;
  20.  
  21. class WindowCoordSystem;
  22. typedef int WinUnit;
  23. typedef Coords<WinUnit, WindowCoordSystem> WinCoords;
  24. typedef BBox<WinUnit, WindowCoordSystem> WinBBox;
  25. typedef TransformMatrix<WinUnit, float, WindowCoordSystem> WinTransform;
  26.  
  27. class BaseWindow {
  28. public:
  29.   class Position {
  30.   public:
  31.     Position();
  32.     Position(const BaseWindow &window);
  33.  
  34.     Position &operator=(const Position &p)
  35.       { visible = p.visible; scroll = p.scroll;
  36.         next = p.next; return *this; }
  37.     bool operator==(const Position &p) const
  38.       { return visible == p.visible && scroll == p.scroll &&
  39.         next == p.next; }
  40.  
  41.     enum StackPos { top = -1, bottom = -2 };
  42.  
  43.     ScrBBox visible;
  44.     WinCoords scroll;
  45.     StackPos next;
  46.  
  47.     Position &set_to_top() { next = top; return *this; }
  48.     Position &set_to_bottom() { next = bottom; return *this; }
  49.   };
  50.   operator Position::StackPos() const
  51.     { return (Position::StackPos) get_wimp_handle(); }
  52.  
  53.   void show();
  54.   void show(const ScrCoords &topleft);
  55.   void show(const Position &position);
  56.   void show_transient();
  57.   void show_transient(const ScrCoords &topleft);
  58.   void show_transient(const Position &position);
  59.   void hide();
  60.   void iconise();
  61.  
  62.   bool is_showing() const;
  63.   void get_position(Position &position) const;
  64.   Position get_position() const
  65.     { Position temp; get_position(temp); return temp; }
  66.  
  67.   ScrUnit get_left_border() const { return 0; }
  68.   ScrUnit get_right_border() const;
  69.   ScrUnit get_top_border() const;
  70.   ScrUnit get_bottom_border() const;
  71.  
  72.   void set_scroll_position(const WinCoords &scroll);
  73.   void get_scroll_position(WinCoords &scroll) const;
  74.   WinCoords get_scroll_position() const
  75.     { WinCoords temp; get_scroll_position(temp); return temp; }
  76.  
  77.   WinCoords scr_to_win(const ScrCoords &pos) const;
  78.   ScrCoords win_to_scr(const WinCoords &pos) const;
  79.   WinBBox scr_to_win(const ScrBBox &bbox) const;
  80.   ScrBBox win_to_scr(const WinBBox &bbox) const;
  81.  
  82.   virtual Window &get_window();
  83.   virtual const Window &get_window() const;
  84.   virtual BaseWindow &get_next_window() = 0;
  85.   virtual const BaseWindow &get_next_window() const = 0;
  86.  
  87.   virtual bool has_window() const;
  88.   virtual bool has_next_window() const = 0;
  89.  
  90.   // Low level
  91.   virtual wimp_w get_wimp_handle() const;
  92.   virtual ToolboxObject &get_top_toolbox_object();
  93.   virtual const ToolboxObject &get_top_toolbox_object() const;
  94. };
  95.  
  96. #endif
  97.