//
//  Tegaki.h
//	手書き処理；1ページ分
//  traceWrite
//
//  Created by 今井 彰彦 on 2011/11/08.
//  Copyright (c) 2011 AIG-Soft. All rights reserved.
//

#import <UIKit/UIKit.h>

enum { // LINES:atrb値
	kTouchesBegan=0,	// touchesBegan
	kTouchesMoved,		// touchesMoved
	kTouchesEnded		// touchesEnded
};

enum { // fsnapShot値<BIT8
	FSNAPSHOT_NO=0,	// 取得しない
	FSNAPSHOT_YES,	// 変更部分のみ取得
	FSNAPSHOT_ALL,	// 全体取得
};
#define FSNAPSHOT_DISABLE_CONCURRENT	BIT8	// 並行動作禁止区間

typedef struct {
	ushort		atrb;		// 種類;kTouches*
	CGPoint		point;		// 現在タッチ位置座標(終点)
	// ↓これがないとUndo時に正しい色で戻せない
	ushort		penColor;	// 描画色
	CGFloat		penWidth;	// 線の太さ
} LINES;
#define SZ_LINES	sizeof(LINES)

@protocol TegakiDelegate
-(void)disappearPenWidth;
-(CGRect)getDisplayArea;
@end


@interface TegakiView : UIView	// UIImageViewにすると描画できない
<
UIAlertViewDelegate
>
{
	id <TegakiDelegate>	delegate;	// デリゲート処理用
	//
	UIScrollView	*scrollView;	// これが含まれるscrollView
	UIImageView		*imageView;		// 実体は外部から与える
	NSInteger		fsnapShot;		// SnapShotを実実行するべきかどうか(FSNAPSHOT_*)
	// タッチ動作制御
	ushort			atrb;			// 現在の描画状態(kTouches*)
	CGPoint			point0;			// 1つ前の座標情報
	NSInteger		drawStart;		// lineArray[drawStart〜最終]までが再描画(drawRect)対象
}
// 現在描画属性
@property (nonatomic) ushort	penColor;	// 描画色
@property (nonatomic) CGFloat	penWidth;	// 線の太さ;sliderで変更される
//
@property (nonatomic) CGSize		contentSize;	// ワークサイズ
@property (nonatomic,strong) NSMutableArray	*lineArray;	// LINES[]をストロークごとに記録する(配列確保は外部で行う)

-(void)initTegaki:(id)delegate_ scrollView:(UIScrollView *)scrollView_ imageView:(UIImageView *)imageView_;
-(void)clearPage1;
-(void)undo:(id)sender;
-(void)touchesLatestEnd;
-(CGPoint)getTouchPoint:(NSSet *)touches;
-(void)reDrawAll;
-(UIImage *)snapShot;
-(void)imageSnapShot;
-(void)savePDFFileWithImage:(NSMutableData *)pdfData;
-(NSData *)getAttach;

// 描画幅
#define DEF_PENCIL_WIDTH	2.0f
#define DEF_ERASER_WIDTH	8.0f

@end
