You've already forked lazarus-ccr
iphonelazext: added HelloWorld example
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1131 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
79
components/iphonelazext/examples/HelloWorld/ihelloworld.pas
Normal file
79
components/iphonelazext/examples/HelloWorld/ihelloworld.pas
Normal file
@ -0,0 +1,79 @@
|
||||
program ihelloworld;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
{$modeswitch objectivec1}
|
||||
{$linkframework UIKit}
|
||||
|
||||
uses
|
||||
iPhoneAll, CGContext, CGGeometry, CFString;
|
||||
|
||||
type
|
||||
TAppDelegate = objcclass(NSObject)
|
||||
procedure applicationDidFinishLaunching(application: UIApplication); message 'applicationDidFinishLaunching:';
|
||||
end;
|
||||
|
||||
TMyWindow = objcclass(UIWindow)
|
||||
public
|
||||
procedure drawRect(c: CGRect); override;
|
||||
end;
|
||||
|
||||
const
|
||||
helloworld = 'Hello world';
|
||||
|
||||
// window paint method
|
||||
procedure TMyWindow.drawRect(c: CGRect);
|
||||
var
|
||||
cg : CGContextRef;
|
||||
begin
|
||||
// getting current context
|
||||
cg:=UIGraphicsGetCurrentContext;
|
||||
// setting back ground color
|
||||
CGContextSetRGBFillColor(cg, 0, 0, 0.5, 1);
|
||||
CGContextFillRect(cg, c);
|
||||
|
||||
// rotating up-side down context
|
||||
CGContextTranslateCTM(cg, 0, c.size.height);
|
||||
CGContextScaleCTM(cg, 1, -1);
|
||||
|
||||
// setting text color
|
||||
CGContextSetRGBFillColor(cg, 1, 1, 0, 1);
|
||||
CGContextSetRGBStrokeColor(cg, 1, 1, 0, 1);
|
||||
// setting font (must set any)
|
||||
CGContextSelectFont(cg, 'Helvetica', 30, kCGEncodingMacRoman);
|
||||
// rendering text
|
||||
CGContextShowTextAtPoint(cg, 0, c.size.height-50, helloworld, length(helloworld));
|
||||
end;
|
||||
|
||||
var
|
||||
mainwindow : TMyWindow;
|
||||
|
||||
{ TAppDelegate }
|
||||
|
||||
procedure TAppDelegate.applicationDidFinishLaunching(application: UIApplication);
|
||||
begin
|
||||
// application has initialized, now we can create the main window
|
||||
mainwindow:=TMyWindow(TMyWindow.alloc);
|
||||
// initialize window in Objective-C style
|
||||
mainwindow := TMyWindow(mainwindow.initWithFrame (UIScreen.mainScreen.bounds));
|
||||
// activate and show the window
|
||||
mainwindow.makeKeyAndVisible;
|
||||
end;
|
||||
|
||||
function NSStr(const s: string): NSString;
|
||||
begin
|
||||
// converting string to NSString (CFStringRef and NSString are interchangable)
|
||||
Result:=NSString( CFStr(PChar(s)));
|
||||
end;
|
||||
|
||||
var
|
||||
pool : NSAutoreleasePool;
|
||||
|
||||
begin
|
||||
// initialize foundation memory manger (aka autorelease pool)
|
||||
pool := NSAutoreleasePool.alloc.init;
|
||||
// launching main application loop
|
||||
ExitCode:=UIApplicationMain(argc, argv, nil, NSSTR('TAppDelegate'));
|
||||
// according to docs the UIApplicationMain never returns,
|
||||
// but still the code present in the Obj-C main.m files
|
||||
pool.release;
|
||||
end.
|
Reference in New Issue
Block a user