//
// Prefix header for all source files of the 'ZeroRec/Komadori' target in the 'ZeroRec/Komadori' project
//
#import <Availability.h>

#ifndef __IPHONE_5_0
#warning "This project uses features only available in iPhone SDK 5.0 and later."
#endif

// デバッグ中かどうか
//#define	DEBUG		// コンパイルオプションで定義する

/* 機能定義表
			ZEROREC		KOMADORI	#define名			同時制御
常時録画		◯			◯			USE_CONSTANT
1SHOT		◯			◯			USE_1SHOT			(ポスト1枚は別)
NSHOT		×			○			USE_NSHOT			必ずUSE_CONSTANTを有効にすること/NSHOTはアラーム録画処理の一部を含む
アラーム		◯			×			USE_ALARM			３D-Alarm,リトリガー/latestEvent,labelAlarm（表示のみ）,posttime,アラーム抑止
タイマー		◯			×			USE_TIMER
ExitDelay	◯			×			USE_EXITDELAY
BT			◯			◯			USE_BLUETOOTH		RemoteViewController,Bluetooth
設定出力		◯			×			USE_SETUPOUTPUT		listup,mail,pdf
ログ			◯			×			USE_LOG
枚数			◯			×			USE_COUNT			
日付写し込み	◯			×			USE_COLORSELECT		ATRBPOSITION
電池チェック	◯			×			USE_BATTERY			percent
 〜〜〜〜全体共通
 レベル３段階							USE_LEVEL3
  */
// すべての機能が完全に非連動でON/OFF出来る訳ではないので注意。
// 基本的には下記３アプリ用のみ保証される

//全体設定
//#define	USE_LEVEL3

#ifdef ZEROREC
#define	PROGRAM_NAME		@"ZEROREC_NAME"	/* プログラム名 */
#define	CONSTANTINTERVAL	@"CONSTANTINTERVAL"
#define	CONSTANT			@"CONSTANT"
#define ALARM				@"ALARM"
#define	SET_CONSTANT		@"SET_CONSTANT"
#define SET_ALARM			@"SET_ALARM"
#define	ALARMINTERVAL		@"ALARMINTERVAL"
#define	ALARMPOST			@"ALARMPOST"
#define	ALARMFILE			@"ALARMFILE"

#define	MAINVIEW_IMG		@"mainView.png"
#define	SOUND_LAUNCH		"SE_13low"	// 起動音ファイル名(拡張子は.wav固定);これはC文字列
//
#define	USE_CONSTANT	
#define	USE_1SHOT
//#define	USE_NSHOT
#define	USE_ALARM
#define	USE_TIMER
#define	USE_EXITDELAY
#define	USE_BLUETOOTH
//#define	NOAVITEXT		// AVIのテキスト文字列なし
#define	USE_SETUPOUTPUT
#define	USE_LOG
#define	USE_COUNT
#define	USE_COLORSELECT
#define	USE_FLASH
#define	USE_BATTERY
#define	USE_ETC
#endif	// ZEROREC


// 「こまどり」を作るときはこれを定義する
#ifdef KOMADORI
// Localized.strings
#define	PROGRAM_NAME		@"KOMADORI_NAME"	/* プログラム名 */
#define	CONSTANTINTERVAL	@"KCONSTANTINTERVAL"
#define	CONSTANT			@"KCONSTANT"
#define ALARM				@"KALARM"
#define	SET_CONSTANT		@"SET_KCONSTANT"
#define SET_ALARM			@"SET_KALARM"
#define	ALARMINTERVAL		@"KALARMINTERVAL"
#define	ALARMPOST			@"KALARMPOST"
#define	ALARMFILE			@"KALARMFILE"

#define	MAINVIEW_IMG		@"kmainView.png"
#define	SOUND_LAUNCH		"SE_09low"	// これはC文字列
//
#define	USE_CONSTANT	
#define	USE_1SHOT
#define	USE_NSHOT
//#define	USE_ALARM		// これがないときはgyroscope/accelerometerは必要ない
//#define	USE_TIMER
//#define	USE_EXITDELAY
#define	USE_BLUETOOTH
//#define	NOAVITEXT		// AVIのテキスト文字列なし
//#define	USE_SETUPOUTPUT
//#define	USE_LOG
//#define	USE_COUNT
//#define	USE_COLORSELECT
#define	USE_FLASH
//#define	USE_BATTERY
#define	USE_ETC
#endif	// KOMADORI


// 型名定義
typedef	unsigned	char	UByte;	// 符号無し８ビット
typedef	signed		char	SByte;	// 符号あり８ビット
typedef	unsigned	short	UWord;	// 符号無し16ビット
typedef	signed		short	SWord;	// 符号あり16ビット
typedef	unsigned	long	ULong;	// 符号無し32ビット
typedef	signed		long	SLong;	// 符号あり32ビット

// 型別サイズ
#define	SZ_BYTE		(sizeof(UByte))		// 符号ありも同じ大きさ
#define	SZ_WORD		(sizeof(UWord))
#define	SZ_LONG		(sizeof(ULong))
#define	SZ_LLONG	(sizeof(ULLong))
#define	SZ_VOIDP	(sizeof(void *))	// ポインタサイズ	64bitCPUの場合	4バイトかもしれないので要調査

// 超基本定数定義
#define	BIT0	0x00000001
#define	BIT1	(BIT0<<1)
#define	BIT2	(BIT0<<2)
#define	BIT3	(BIT0<<3)
#define	BIT4	(BIT0<<4)
#define	BIT5	(BIT0<<5)
#define	BIT6	(BIT0<<6)
#define	BIT7	(BIT0<<7)
#define	BIT8	(BIT0<<8)
#define	BIT9	(BIT0<<9)
#define	BIT10	(BIT0<<10)
#define	BIT11	(BIT0<<11)
#define	BIT12	(BIT0<<12)
#define	BIT13	(BIT0<<13)
#define	BIT14	(BIT0<<14)
#define	BIT15	(BIT0<<15)
#define	BIT16	(BIT0<<16)
#define	BIT17	(BIT0<<17)
#define	BIT18	(BIT0<<18)
#define	BIT19	(BIT0<<19)
#define	BIT20	(BIT0<<20)
#define	BIT21	(BIT0<<21)
#define	BIT22	(BIT0<<22)
#define	BIT23	(BIT0<<23)
#define	BIT24	(BIT0<<24)
#define	BIT25	(BIT0<<25)
#define	BIT26	(BIT0<<26)
#define	BIT27	(BIT0<<27)
#define	BIT28	(BIT0<<28)
#define	BIT29	(BIT0<<29)
#define	BIT30	(BIT0<<30)
#define	BIT31	(BIT0<<31)

// NSTimeIntervalでのなしの印
#define	None	(0.0)	// なし

// 時間単位
#define TM_ALERT_DISPLAY	(1.0)	// ×シンボル表示秒
#define	TM_CHECK_OPERATION	(0.5)	// チェック間隔：今の処理速度ではこれで十分なはず

#define	NSLocalStr(str)	NSLocalizedString(str,nil)
#define	rgbf(rgb)	(rgb/255.0)

// 基本文字列定義
#define	SPC2	NSLocalStr(@"HSPC2")	/* 半角スペース*2相当幅 */
#define	SPC4	NSLocalStr(@"HSPC4")	/* 半角スペース*4相当幅 */

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
#endif

// エラー通知用辞書キー
#define	DIC_TITLE		@"title"
#define	DIC_MESSAGE		@"message"
#define	DIC_EXCEPTION	@"exception"

// 代表的フォント名
#define	FONT_HIRAGINO_KAKU_GOTHIC_W3	@"HiraKakuProN-W3"
#define	FONT_HIRAGINO_KAKU_GOTHIC_W6	@"HiraKakuProN-W6"
#define FONT_HELVETICA					@"Helvetica"
#define	FONT_TIMES_NEW_ROMAN			@"Times New Roman"


// DEBUGのときのみnslog()等を有効にする定義
#if COMPILE_MODE==2 // Distributionの時は外す
#define	printf(...)
#define	nslog(...)
#define	NSLog(...)
#define	nslog2(...)
#define	printSelfs(a,b)
#define	printSelf()
#define printFile()
#define	printFunc()
#define	printFuncs(a,b)
#define printFunc2()
#else // Distribution以外
// ここは必要に応じて変更しても良い
#ifdef DEBUG
#define	nslog		NSLog
#define	nslog2		NSLog	// 常時表示用
// 自身のクラス名とメソッド名を表示する関数;メソッド内でしか使えない(関数内では利用不可)
// 継承されているときは、親クラスの名前が出てしまうので注意
#define	printSelfs(a,b)	NSLog(@"%@:%@/" a,NSStringFromClass([self class]),NSStringFromSelector(_cmd),b)
#define	printSelf()		NSLog(@"%@:%@",NSStringFromClass([self class]),NSStringFromSelector(_cmd))
// なので、明確に実ファイルを表示する関数
#define	printFile()		NSLog(@"%s(%d):%@",__FILE__,__LINE__,NSStringFromSelector(_cmd))
#define	printFunc()		NSLog(@"%s",__FUNCTION__)
#define	printFuncs(a,b)	NSLog(@"%s/" a,__FUNCTION__,b)
#define printFunc2()	NSLog(@"%s.%s",__file__,__FUNCTION__)
#else // Release
#define	printf(...)
#define	nslog(...)
#define	nslog2		NSLog	// 常時表示用
//#define	nslog2(...)
#define	printSelfs(a,b)
#define	printSelf()
#define printFile()
#define	printFunc()
#define	printFuncs(a,b)
#define printFunc2()
#endif
#endif
