//
//  Yoko2Tate.h : 手書き専用
//
//  Created by 今井 彰彦 on 2011/12/07.
//  Copyright (c) 2011 AIG-Soft. All rights reserved.
//

#import <Foundation/Foundation.h>
@class ScrollView;

@interface Yoko2Tate : NSObject
{
	// text2Imageで設定する
	NSString		*fontName;	// フォント名(assignというか定数のこと)
	CGFloat			SCAreaHeight;	// スクロールエリアの高さ
	CGFloat			SCAreaOffset;	// offsetY内のスクロールエリアの相対位置;OFFSETYの中央
}
@property (nonatomic) NSInteger	tlines;	// 結果の縦文字数＝行数
@property (nonatomic) NSInteger	tketas;	// 結果の横文字数(桁数)
@property (nonatomic) CGFloat	pointx;	// スクロール座標x
@property (nonatomic) CGFloat	pointy;	// スクロール座標y
@property (nonatomic,strong) NSMutableString	*ttext;		// 縦全文字列
@property (nonatomic,strong) NSMutableArray		*lineStr;	// 縦の行別文字列;NSMutableStringの配列
// ↓ここは縦行数分しか確保しない＝小さいので省メモリ対策しない
@property (nonatomic,strong) NSMutableArray		*lineAreaArray;		// 各行の文字領域(CGRect)を返す配列
@property (nonatomic,strong) NSMutableArray		*scrollAreaArray;	// スクロール処理を行う領域(CGRect)を返す配列
@property (nonatomic,assign) CGSize				areaSize;	// 全領域サイズ
@property (nonatomic,assign) CGSize				spSize;		// 全角スペースの幅;フォントサイズも含む
@property (nonatomic,assign) CGPoint			offset;		// 上、左オフセット

enum {
	CHAR_NORMAL=0,
	CHAR_SKIP ,
	CHAR_CRLF ,
};
NSInteger checkChar(NSString *text,NSInteger *i_,NSString *(*c_));
NSInteger Pass1(NSString *text,NSInteger charMax);
NSInteger Pass2main(NSString *text,NSInteger charMaxR,NSInteger i,NSMutableString *str);
//
-(void)yoko2Tate:(NSString *)text tcharMax:(NSInteger)tcharMax;
-(BOOL)isTLeftSpace:(NSInteger)keta line:(NSInteger)line;
-(UIImage *)text2Image:(CGFloat)fontsize_ fontName:(NSString *)fontName_ fscrollArea:(BOOL)fscrollArea color:(UIColor *)color;
-(NSInteger)getCharX:(CGPoint)point;
-(NSInteger)getCharY:(CGPoint)point;
-(CGFloat)yPoint:(NSInteger)y scrollView:(ScrollView *)scrollView;
enum { // 上の定数とは関係ない
	CHAR_NO_SCROLL=-1,	// スクロール不要
	CHAR_IN_VIEW=0,		// 画面内にある
	CHAR_IN_VIEWR,		// 画面内にある(右スクロール)
	CHAR_IN_VIEWL,		// 画面内にある(左スクロール)
	CHAR_OUTOF_UP,		// 一番上の上側にある
	CHAR_OUTOF_DOWN,	// 一番下の下側にある
	CHAR_OUTOF_LEFT,	// 左の左側にある
	CHAR_OUTOF_RIGHT	// 右の右側にある
};
-(NSInteger)isCharXcheck:( NSInteger)x scrollView:(ScrollView *)scrollView;
-(NSInteger)isCharYcheck:( NSInteger)y scrollView:(ScrollView *)scrollView ftategaki:(BOOL)ftategaki;
-(NSInteger)isTCharYcheck:(NSInteger)y scrollView:(ScrollView *)scrollView;
-(NSInteger)isTCharXcheck:(NSInteger)x scrollView:(ScrollView *)scrollView;

// これらは定数ではなく計算式なので注意
#define OFFSETWWX	2	// 一文字の何分の一を左右につけるか
#define OFFSETWWY	2	// 一文字の何分の一を上下につけるか
#define Height1Line		(_offset.y+_spSize.height)	// 1行分の高さ(spSize.heightはtext2Imageで補正済み)

#define Force		@"/"
#define ForceCR		@"n"	// 強制改行
#define ForceSpace	@"s"	// スペーサー
#define ForceSlash	@"/"	// '/'文字そのもの

@end
