//
//  libs.h
//  汎用関数
//
//  Created by 今井 彰彦 on 10/12/21.
//  Copyright 2010 AIG-Soft. All rights reserved.
//

#import <UIKit/UIKit.h>
#include <stdlib.h>	// abs()

typedef enum { // デバイス種類
	DEVICE_UNKNOWN=0,
	DEVICE_IPAD,
	DEVICE_IPODTOUCH,
	DEVICE_IPHONE,
	// シミュレーター
	DEVIDE_IPHONE_SIMURATOR,
	DEVICE_IPAD_SIMULATOR
} DEVICE_TYPE;
#define DEVICE_SIMULATOR	DEVIDE_IPHONE_SIMURATOR

// プロトタイプ宣言
void SetViewBelowStatusBar(UIView *view);
void SetViewSize(UIView *view,CGFloat wx,CGFloat wy);
NSString *strInterfaceOrientation(UIInterfaceOrientation Orientation);
NSString *strDeviceOrientation(UIDeviceOrientation Orientation);
BOOL checkDeviceOrientationOK(void);
NSString *mesONOFF(BOOL onoff);
NSString *mesONOFF2(BOOL onoff,NSString *onmes,NSString *offmes);
DEVICE_TYPE getDeviceType(void);
BOOL isDeviceIpad(DEVICE_TYPE devtype);
float getSystemVersion(void);
NSUInteger getHourMinSec(NSDate *date,NSUInteger *hour,NSUInteger *sec);
NSString *dateStringWithoutGMT(NSDate *date);
NSString *leftString(NSString *title,BOOL flocalize);
NSString *leftString2(NSString *title,BOOL flocalize,UITextView *textView);
void setActionSheetResize(UIActionSheet *asheet);
void setAlertViewResize(UIAlertView *aview);
void Alert1(NSString *title,NSString *message,id delegate);
NSString *dateFormatJtoE(NSString *date);

BOOL cmpRegularExpression(NSString *str,NSString *expression);
void EnterRunLoop(NSTimeInterval tm);
UICollectionViewFlowLayout *makeCollectionViewFlowLayout(
														 CGFloat topHeight		,CGFloat footerHeight,
														 CGFloat leftMargin		,CGFloat rightMargin,
														 CGFloat interCellX		,CGFloat interCellY,
														 CGFloat sectionHeader	,CGFloat sectionFooter
														 );
id getCellFromNib(NSString *nibName);
void hiddenAnimation(UIView *view1,UIView *view2,BOOL fview1On,NSTimeInterval duration);
BOOL isInHiddenAnimation(void);
NSInteger getButtonTag(id sender);
BOOL isButtonOrBarButtonItem(id sender);
BOOL isLandscape(UIInterfaceOrientation orientation);
BOOL isPortrait(UIInterfaceOrientation orientation);
UIImage *getImageFromResourceOrDocuments(NSString *path);
BOOL isPointInRect(CGPoint point,CGRect rect);

// #define関数
// 実行ループにタイマーを追加する
#define AddTimerToRunLoop(timer)	[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]

// 浮動小数点(<1.0,>=0.1)比較:浮動小数点では直接==は累積演算誤差で一致しないので
//#define	EquFloat(f1,f2)	(abs(f1-f2)<0.1)
#define	EquFloat(f1,f2)	((int)(f1*10.0)==(int)(f2*10.0))

// 分→秒変換
#define	tMin(m)	((NSTimeInterval)(m)*60.0)

// iOS5以降かどうか
#define isiOS5over()	(getSystemVersion()>=5.0)

// デバッグ用関数
#ifdef DEBUG
#define	printFrame(mes,frame)	nslog(mes @"%@:",NSStringFromCGRect(frame))
#define	isJIKKI()		(getDeviceType()!=DEVICE_SIMULATOR)
#define	isSIMULATOR()	(getDeviceType()==DEVICE_SIMULATOR)
#else // 本番
#define	printFrame(...)
#define	isJIKKI()		(1)	/* 本番は常に実機とみなす */
#define	isSIMULATOR()	(0)	/* 同上 */
#endif
