#pragma once

#include "McDbObjectId.h"
#include "McDbDatabase.h"
#include "McDbObject.h"

class McDbMlineStyleImp;

// -------------------------------------------------------------------------
// Summary:
// 		多线样式风格记录
// -------------------------------------------------------------------------
class ARXDLL McDbMlineStyle : public McDbObject
{
public:
	// -------------------------------------------------------------------------
	// Summary:
	// 		构造函数
	// -------------------------------------------------------------------------
	McDbMlineStyle(void);

	// -------------------------------------------------------------------------
	// Summary:
	// 		析构函数
	// -------------------------------------------------------------------------
	virtual ~McDbMlineStyle(void);

	// -------------------------------------------------------------------------
	// Summary:
	// 		申明类型信息
	// -------------------------------------------------------------------------
	MCDB_DECLARE_MEMBERS(McDbMlineStyle);


	// -------------------------------------------------------------------------
	// Summary:
	// 		设置多线样式记录的说明字符串
	// -------------------------------------------------------------------------
	Mcad::ErrorStatus setDescription(const MCHAR * description);

	// -------------------------------------------------------------------------
	// Summary:
	// 		返回多线样式记录的说明字符串
	// -------------------------------------------------------------------------
	const MCHAR*       description() const;

	// -------------------------------------------------------------------------
	// Summary:
	// 		设置多线样式记录名字符串
	// -------------------------------------------------------------------------
	Mcad::ErrorStatus setName(const MCHAR * name);

	// -------------------------------------------------------------------------
	// Summary:
	// 		返回多线样式记录名字符串
	// -------------------------------------------------------------------------
	const MCHAR*       name() const;

	//:Ignore

	void              setShowMiters(bool showThem);
	bool              showMiters() const;

	void              setStartSquareCap(bool showIt);
	bool              startSquareCap() const;

	void              setStartRoundCap(bool showIt);
	bool              startRoundCap() const;

	void              setStartInnerArcs(bool showThem);
	bool              startInnerArcs() const;

	void              setEndSquareCap(bool showIt);
	bool              endSquareCap() const;

	void              setEndRoundCap(bool showIt);
	bool              endRoundCap() const;

	void              setEndInnerArcs(bool showThem);
	bool              endInnerArcs() const;

	Mcad::ErrorStatus setFillColor(const McCmColor& color);
	const McCmColor&  fillColor() const;

	void              setFilled(bool onOff);
	bool              filled() const;

	Mcad::ErrorStatus setStartAngle(double ang);
	double            startAngle() const;

	Mcad::ErrorStatus setEndAngle(double ang);
	double            endAngle() const;

	Mcad::ErrorStatus addElement(int& index, double offset,
		const McCmColor &color,
		McDbObjectId linetypeId,
		bool checkIfReferenced = true);
	Mcad::ErrorStatus removeElementAt(int elem);

	int numElements() const;

	Mcad::ErrorStatus setElement(int elem, double offset,
		const McCmColor &color,
		McDbObjectId linetypeId);

	Mcad::ErrorStatus getElementAt(int elem, double& offset,
		McCmColor & color,
		McDbObjectId & linetypeId) const;

	virtual Mcad::ErrorStatus dwgInFields(McDbDwgFiler* pFiler);
	virtual Mcad::ErrorStatus dwgOutFields(McDbDwgFiler* pFiler) const;

private:

};
