Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TREGIONPROP_H
Toshihiro Shimizu 890ddd
#define TREGIONPROP_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tgeometry.h"
Toshihiro Shimizu 890ddd
#include "tregionoutline.h"
Toshihiro Shimizu 890ddd
#include "tsimplecolorstyles.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifdef TVRENDER_EXPORTS
Toshihiro Shimizu 890ddd
#define DVAPI DV_EXPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_EXPORT_VAR
Toshihiro Shimizu 890ddd
#else
Toshihiro Shimizu 890ddd
#define DVAPI DV_IMPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_IMPORT_VAR
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//============================================================================//
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
// forward declarations
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TColorStyle;
Toshihiro Shimizu 890ddd
class TRegion;
Toshihiro Shimizu 890ddd
class TVectorRenderData;
Toshihiro Shimizu 890ddd
class TInputStreamInterface;
Toshihiro Shimizu 890ddd
class TOutputStreamInterface;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
template <class t=""></class>
Toshihiro Shimizu 890ddd
class TRasterPT;
Toshihiro Shimizu 890ddd
class TPixelRGBM32;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
typedef TPixelRGBM32 TPixel32;
Toshihiro Shimizu 890ddd
typedef TRasterPT<tpixel32> TRaster32P;</tpixel32>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//============================================================================//
Shinya Kitaoka 120a6e
//                                TRegionProp //
Toshihiro Shimizu 890ddd
//============================================================================//
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class TRegionProp {
Shinya Kitaoka 120a6e
  const TRegion *const m_region;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 120a6e
  bool m_regionChanged;
Shinya Kitaoka 120a6e
  int m_styleVersionNumber;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  TRegionProp(const TRegion *region);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual ~TRegionProp() {}
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  //! Note: update internal data if isRegionChanged()
Shinya Kitaoka 120a6e
  virtual void draw(const TVectorRenderData &rd) = 0;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  const TRegion *getRegion() const { return m_region; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual const TColorStyle *getColorStyle() const = 0;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual void notifyRegionChange() { m_regionChanged = true; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  virtual TRegionProp *clone(const TRegion *region) const = 0;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 120a6e
  // not implemented
Shinya Kitaoka 120a6e
  TRegionProp(const TRegionProp &);
Shinya Kitaoka 120a6e
  TRegionProp &operator=(const TRegionProp &);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class OutlineRegionProp final : public TRegionProp {
Shinya Kitaoka 120a6e
  double m_pixelSize;
Shinya Kitaoka 120a6e
  TOutlineStyleP m_colorStyle;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TRegionOutline m_outline;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  //-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void computeRegionOutline();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  OutlineRegionProp(const TRegion *region, const TOutlineStyleP regionStyle);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  void draw(const TVectorRenderData &rd) override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  const TColorStyle *getColorStyle() const override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  TRegionProp *clone(const TRegion *region) const override;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif