//
//  FontSizeSelect.m
//  traceWrite
//
//  Created by 今井 彰彦 on 2012/02/23.
//  Copyright 2012 AIG-Soft. All rights reserved.
//

#import "FontSizeSelect.h"
#import "FontSelect.h"
#import	"Setup.h"
#import "main.h"
#import "click.h"
#import "AppDelegate.h"

@interface FontSizeSelect()
{
	AppDelegate *app;
	Setup *setup;
}

@end

@implementation FontSizeSelect

//-------------------------------------------------------------------

-(void)viewWillAppear:(BOOL)animated
{
	printSelf();
	[super viewWillAppear:animated];
	//
	lblFontName.text=NSLocalStr(name); // ローカライズして表示
	// スライダー設定
	sliderSize.minimumValue=minFontSize();
	lblFontMinSize.text=[NSString stringWithFormat:FMT_FONT,minFontSize()];
	sliderSize.maximumValue=maxSize;
	lblFontMaxSize.text=[NSString stringWithFormat:FMT_FONT,maxSize];
	//
	sliderSize.value=_size;
	[self sliderAction:nil];
	//
	[btnDefault setTitle:NSLocalStr(@"DEFAULT") forState:UIControlStateNormal];
	//
	lblSample.text=_sampleText;
}

#ifdef DEBUG
-(void)viewDidLoad
{
	printSelf();
	[super viewDidLoad];
}
#endif

//-------------------------------------------------------------------
// 設定可能フォントサイズを得る

typedef struct {
	CGFloat	fontMin;	// 最小フォントサイズの設定
	CGFloat fontMax;	// 最大フォントサイズを設定
	CGFloat fontDef;	// デフォルトフォントサイズ
	CGFloat widthMin;	// 最小フォントの時のペン幅デフォルト値
	CGFloat widthMax;	// 最大フォントの時のペン幅デフォルト値
} FONTATRB;
// フォントサイズ : 16単位

static
FONTATRB fontAtrb[]={
	{48,256,96,3  ,10},	// [0]=iPhone	漢字で96はペンでないと無理
	{48,256,96,1.5,20},	// [1]=iPad
};

// フォントサイズに従ったデフォルトペン幅の設定
CGFloat defPenWidth(CGFloat fontSize)
{
	NSInteger i=0;
	if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) i=1;
	CGFloat min   =fontAtrb[i].fontMin;
	CGFloat dfont =fontAtrb[i].fontMax -min;  // フォントサイズの幅
	CGFloat dwidth=fontAtrb[i].widthMax-fontAtrb[i].widthMin; // ペン幅の幅
	nslog(@"dwidth=%f,dfont=%f,fontSize=%f",dwidth,dfont,fontSize);
	// ペン幅は、最小から最大までの間を線形で計算する
	CGFloat penWidth=fontAtrb[i].widthMin+(dwidth/dfont)*(fontSize-min);
//	if (penWidth>=fontAtrb[i].widthMax) penWidth=fontAtrb[i].widthMax;
	nslog(@"fontSize=%f→penWidth=%f",fontSize,penWidth);
	return penWidth;
}

CGFloat minPenWidth(void)
{
	NSInteger i=0;
	if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) i=1;
	return fontAtrb[i].widthMin;
}

CGFloat maxPenWidth(void)
{
	NSInteger i=0;
	if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) i=1;
	return fontAtrb[i].widthMax;
}

// 最小フォントサイズの設定
CGFloat minFontSize(void)
{
	NSInteger i=0;
	if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) i=1;
	return fontAtrb[i].fontMin;
}

// 最大フォントサイズを設定する
// 現在はズーム時の倍率計算にしか使われていない
CGFloat maxFontSize(void)
{
	NSInteger i=0;
	if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) i=1;
	return fontAtrb[i].fontMax;
}

// デフォルトフォントサイズを設定する
CGFloat defFontSize(void)
{
	NSInteger i=0;
	if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) i=1;
	return fontAtrb[i].fontDef;
}

//-------------------------------------------------------------------

-(CGFloat)getFontSize
{
	_size=sliderSize.value;
	nslog(@"size=%f:size0=%f",_size,size0);
	return (_size>size0)? size0:_size;
}

// スライダー変更時処理
-(IBAction)sliderAction:(id)sender
{
	if (_size!=sliderSize.value || sender==nil) {
		// 更新時のみ
		_size=sliderSize.value;
		UIFont *sfont=[UIFont fontWithName:name size:_size]; // そのサイズのフォントを取得
		if (sfont.lineHeight>viewDisp.frame.size.height
		 || sfont.pointSize >viewDisp.frame.size.width) {
			// 表示枠を超えるので設定不可
			nslog(@"表示枠を超える");
			sliderSize.value=size0; // 元に戻す
			return;
		}
		// 設定可能
		size0=_size; // 前回設定可能だったフォントサイズを保存
		CGPoint center=viewDisp.center; // 中央位置
		lblSample.font=sfont;
		CGRect frame={CGPointZero,{lblSample.font.pointSize,lblSample.font.lineHeight}};
		lblSample.frame=frame;
		lblSample.center=center; // 中央位置は合わせておく
		//	nslog(@"font=%@/lineHeight=%f",lblSample.font,lblSample.font.lineHeight);
		//
		lblFontSize.text=[NSString stringWithFormat:FMT_FONT,_size]; // フォントサイズを表示
	}
}

// ボタン押下処理
-(IBAction)buttonAction:(id)sender
{
	clickSound();
	sliderSize.value=defFontSize();
	[self sliderAction:nil];
}

//-------------------------------------------------------------------

- (void)initFontSizeSelect:(id)target selector:(SEL)aSel name:(NSString *)name_ size:(CGFloat)size_ title:(NSString *)title maxSize:(CGFloat)maxSize_
{
	printSelf();
	nslog(@"name=%@(%f)",name_,size_);
	name	=name_;
	size0	=
	_size	=size_; // size_は予め正しいサイズに納めておくこと
	maxSize	=maxSize_;

	app=getAppDelegate();
	setup=app.setup;
	
	// ボタン設定
	self.title=title;
	self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:NSLocalStr(@"SAVE")
																 style:UIBarButtonItemStyleDone
																target:target
																action:aSel];
	self.sampleText=@"A"; // デフォルトサンプル
}

-(void)setSample:(NSString *)text
{
	printSelfs(@"%@",text);
	if (_sampleText!=nil) self.sampleText=nil; // 開放
	self.sampleText=text;
}

//-------------------------------------------------------------------

#ifdef DEBUG
- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#endif

@end
