Blob Blame Raw
#pragma once

#ifndef TSTROKEPROP_H
#define TSTROKEPROP_H

#include "tstrokeoutline.h"
#include "tstroke.h"
#include "tsimplecolorstyles.h"
#undef DVAPI
#undef DVVAR

#ifdef TVRENDER_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif

//=============================================================================
//forward declarations
class TVectorRenderData;
//class TStroke;
class TColorStyle;
class TSimpleStrokeStyle;
class TFlash;
class TRasterImagePatternStrokeStyle;
class TVectorImagePatternStrokeStyle;
class TCenterLineStrokeStyle;
//=============================================================================

//=============================================================================

class DVAPI TSimpleStrokeProp : public TStrokeProp
{
protected:
	TSimpleStrokeStyle *m_colorStyle;

public:
	TSimpleStrokeProp(const TStroke *stroke, TSimpleStrokeStyle *style);
	~TSimpleStrokeProp();

	const TColorStyle *getColorStyle() const;

	TStrokeProp *clone(const TStroke *stroke) const;
	void draw(const TVectorRenderData &rd);
	void draw(TFlash &flash);
};

//=============================================================================

class DVAPI TRasterImagePatternStrokeProp : public TStrokeProp
{
protected:
	TRasterImagePatternStrokeStyle *m_colorStyle;
	std::vector<TAffine> m_transformations;

public:
	TRasterImagePatternStrokeProp(const TStroke *stroke, TRasterImagePatternStrokeStyle *style);
	~TRasterImagePatternStrokeProp();

	const TColorStyle *getColorStyle() const;

	TStrokeProp *clone(const TStroke *stroke) const;
	void draw(const TVectorRenderData &rd);
	void draw(TFlash &flash);
};

//=============================================================================

class DVAPI TVectorImagePatternStrokeProp : public TStrokeProp
{
protected:
	TVectorImagePatternStrokeStyle *m_colorStyle;
	std::vector<TAffine> m_transformations;

public:
	TVectorImagePatternStrokeProp(const TStroke *stroke, TVectorImagePatternStrokeStyle *style);
	~TVectorImagePatternStrokeProp();

	const TColorStyle *getColorStyle() const;

	TStrokeProp *clone(const TStroke *stroke) const;
	void draw(const TVectorRenderData &rd);
	void draw(TFlash &flash);
};

//=============================================================================

class DVAPI OutlineStrokeProp : public TStrokeProp
{

protected:
	TOutlineStyleP m_colorStyle;
	TStrokeOutline m_outline;
	double m_outlinePixelSize;

public:
	OutlineStrokeProp(const TStroke *stroke, TOutlineStyleP style);

	const TColorStyle *getColorStyle() const;

	TStrokeProp *clone(const TStroke *stroke) const;
	void draw(const TVectorRenderData &rd);
	void draw(TFlash &flash);
};

//=============================================================================

#endif