-
Notifications
You must be signed in to change notification settings - Fork 3
/
listing8.html
executable file
·177 lines (153 loc) · 6.85 KB
/
listing8.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<!-- BEGIN META TAG INFO -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="home" href="http://developer.apple.com/">
<link rel="find" href="http://developer.apple.com/search/">
<link rel="stylesheet" type="text/css" href="../../documentation/css/adcstyle.css" title="fonts">
<script language="JavaScript" src="../../documentation/js/adc.js" type="text/javascript"></script>
<!-- END META TAG INFO -->
<!-- BEGIN TITLE -->
<title>Quartz 2D Transformer - /Readme.txt</title>
<!-- END TITLE -->
<script language="JavaScript">
function JumpToNewPage() {
window.location=document.scpopupmenu.gotop.value;
return true;
}
</script>
</head>
<!-- BEGIN BODY OPEN -->
<body>
<!--END BODY OPEN -->
<!-- START CENTER OPEN -->
<center>
<!-- END CENTER OPEN -->
<!-- BEGIN LOGO AND SEARCH -->
<!--#include virtual="/includes/adcnavbar"-->
<!-- END LOGO AND SEARCH -->
<!-- START BREADCRUMB -->
<div id="breadcrumb">
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td scope="row"><img width="340" height="10" src="images/1dot.gif" alt=""></td>
<td><img width="340" height="10" src="images/1dot.gif" alt=""></td>
</tr>
<tr valign="middle">
<td align="left" colspan="2">
<a href="http://developer.apple.com/">ADC Home</a> > <a href="../../referencelibrary/index.html">Reference Library</a> > <a href="../../samplecode/index.html">Sample Code</a> > <a href="../../samplecode/GraphicsImaging/index.html">Graphics & Imaging</a> > <a href="../../samplecode/GraphicsImaging/idxQuartz-date.html">Quartz</a> > <A HREF="javascript:location.replace('index.html');">Quartz 2D Transformer</A> >
</td>
</tr>
<tr>
<td colspan="2" scope="row"><img width="680" height="35" src="images/1dot.gif" alt=""></td>
</tr>
</table>
</div>
<!-- END BREADCRUMB -->
<!-- START MAIN CONTENT -->
<!-- START TITLE GRAPHIC AND INTRO-->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td><h1><div id="pagehead">Quartz 2D Transformer</div></h1></td>
</tr>
</table>
<!-- END TITLE GRAPHIC AND INTRO -->
<!-- START WIDE COLUMN -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td id="scdetails">
<h2>/Readme.txt</h2>
<form name="scpopupmenu" onSubmit="return false;" method=post>
<p><strong>View Source Code:</strong>
<select name="gotop" onChange="JumpToNewPage();" style="width:340px"><option selected value="ingnore">Select File</option>
<option value="listing1.html">/Controller.h</option>
<option value="listing2.html">/Controller.m</option>
<option value="listing3.html">/ImageUtils.c</option>
<option value="listing4.html">/ImageUtils.h</option>
<option value="listing5.html">/ImageView.h</option>
<option value="listing6.html">/ImageView.m</option>
<option value="listing7.html">/main.m</option>
<option value="listing8.html">/Readme.txt</option></select>
</p>
</form>
<p><strong><a href="CGRotation.zip">Download Sample</a></strong> (“CGRotation.zip”, 157.4K)<BR>
<strong><a href="CGRotation.dmg">Download Sample</a></strong> (“CGRotation.dmg”, 214.0K)</p>
<!--
<p><strong><a href="#">Download Sample</a></strong> (“filename.sit”, 500K)</p>
-->
</td>
</tr>
<tr>
<td scope="row"><img width="680" height="10" src="images/1dot.gif" alt=""><br>
<img height="1" width="680" src="images/1dot_919699.gif" alt=""><br>
<img width="680" height="20" src="images/1dot.gif" alt=""></td>
</tr>
<tr>
<td scope="row">
<!--googleon: index -->
<pre class="sourcecodebox">Quartz2DTransformer is a Cocoa application that demonstrates how to use the
Current Transformation Matrix (CTM) to apply rotation, scaling and
transformation to an image for display. It also demonstrates simple usage of
ImageIO to load and save images and how to get the pixel data from a CGImageRef
into an arbitrary buffer.
Controller.h & Controller.m:
These two files contains all the code that handles the user interface.
ImageView.h & ImageView.m:
These two files contain the declaration and implementation of the ImageView
class. This class is a subclass of NSView that lets us display our image.
ImageUtils.h & ImageUtils.c:
The meat of the sample, the utilities that we use to load, save, draw and
transform the image that we are displaying. There are 6 functions that are of
primary usage
ImageInfo * IICreateImage(CFURLRef url) - Loads an image at the given url, and
allocates a structure that holds all the information we need to display it.
bool IISaveImage(ImageInfo * image, CFURLRef url, size_t width, size_t height)
- Saves an image that is of the given size using the display parameters from the
ImageInfo struct.
void IIDrawImage(ImageInfo * image, CGContextRef context, CGRect bounds) - just
draws the given image centered inside of the given bounds.
void IIApplyTransformation(ImageInfo * image, CGContextRef context, CGRect
bounds) - applies the same transformations that IIDrawImage does, but doesn't
draw the image itself.
void IIDrawImageTransformed(ImageInfo * image, CGContextRef context, CGRect
bounds) - similar to calling IIApplyTransformation followed by IIDrawImage, but
it preserves the current CTM.
void IIRelease(ImageInfo * image) - deallocates the ImageInfo struct created by
IICreateImage.</pre>
<!--googleoff: index -->
</td>
</tr>
</table>
<!-- END WIDE COLUMN -->
<!-- END MAIN CONTENT -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><div style="width: 100%; height: 1px; background-color: #919699; margin-top: 5px; margin-bottom: 15px"></div></td>
</tr>
<tr>
<td align="center"><br/>
<table border="0" cellpadding="0" cellspacing="0" class="graybox">
<tr>
<th>Did this document help you?</th>
</tr>
<tr>
<td>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=1&url=/samplecode/CGRotation/listing8.html%3Fid%3DDTS10004203-1.1&media=dvd" target=_new>Yes</a>: Tell us what works for you.</div>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=2&url=/samplecode/CGRotation/listing8.html%3Fid%3DDTS10004203-1.1&media=dvd" target=_new>It’s good, but:</a> Report typos, inaccuracies, and so forth.</div>
<div><a href="http://developer.apple.com/feedback/?v=3&url=/samplecode/CGRotation/listing8.html%3Fid%3DDTS10004203-1.1&media=dvd" target=_new>It wasn’t helpful</a>: Tell us what would have helped.</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- START BOTTOM APPLE NAVIGATION -->
<!--#include virtual="/includes/footer"-->
<!-- END BOTTOM APPLE NAVIGATION -->
<!-- START CENTER CLOSE -->
</center>
<!-- END CENTER CLOSE -->
</body>
</html>