|
@@ -53,10 +53,17 @@
|
53
|
53
|
#define ALARM_X_OFFSET 5
|
54
|
54
|
#define ALARM_Y_OFFSET 57
|
55
|
55
|
|
|
56
|
+#define DOTS_TIME_Y_OFFSET 63
|
|
57
|
+#define DOTS_TIME_X0_OFFSET 18
|
|
58
|
+#define DOTS_TIME_X1_OFFSET 34
|
|
59
|
+
|
|
60
|
+#define DOTS_ALARM_X_OFFSET 38
|
|
61
|
+#define DOTS_ALARM_Y_OFFSET 57
|
|
62
|
+
|
56
|
63
|
@interface Render ()
|
57
|
64
|
|
58
|
65
|
@property (assign) CGImageRef otaconGraphic, bubbleGraphic, alarmGraphic;
|
59
|
|
-@property (assign) CGImageRef eye0, eye1, eye2, eye3, eye4;
|
|
66
|
+@property (assign) CGImageRef eye0, eye1, eye2, eye3, eye4, dotSmallGraphic, dotLargeGraphic;
|
60
|
67
|
@property (assign) CGImageRef fontMonday, fontTuesday, fontWednesday, fontThursday, fontFriday, fontSaturday, fontSunday;
|
61
|
68
|
@property (assign) CGImageRef fontSmall1, fontSmall2, fontSmall3, fontSmall4, fontSmall5, fontSmall6, fontSmall7, fontSmall8, fontSmall9, fontSmall0;
|
62
|
69
|
@property (assign) CGImageRef fontLarge1, fontLarge2, fontLarge3, fontLarge4, fontLarge5, fontLarge6, fontLarge7, fontLarge8, fontLarge9, fontLarge0;
|
|
@@ -65,7 +72,7 @@
|
65
|
72
|
@property (assign) NSInteger dateDigit0, dateDigit1, dateDigit2, dateDigit3;
|
66
|
73
|
@property (assign) NSInteger alarmDigit0, alarmDigit1, alarmDigit2, alarmDigit3;
|
67
|
74
|
@property (assign) NSInteger timeDigit0, timeDigit1, timeDigit2, timeDigit3, timeDigit4, timeDigit5;
|
68
|
|
-@property (assign) BOOL alarmSign;
|
|
75
|
+@property (assign) BOOL alarmSign, alarmDots, timeDots;
|
69
|
76
|
|
70
|
77
|
@property (assign) NSSize fullSize;
|
71
|
78
|
@property (assign) CGContextRef drawContext;
|
|
@@ -77,7 +84,7 @@
|
77
|
84
|
@implementation Render
|
78
|
85
|
|
79
|
86
|
@synthesize otaconGraphic, bubbleGraphic, alarmGraphic;
|
80
|
|
-@synthesize eye0, eye1, eye2, eye3, eye4;
|
|
87
|
+@synthesize eye0, eye1, eye2, eye3, eye4, dotSmallGraphic, dotLargeGraphic;
|
81
|
88
|
@synthesize fontMonday, fontTuesday, fontWednesday, fontThursday, fontFriday, fontSaturday, fontSunday;
|
82
|
89
|
@synthesize fontSmall1, fontSmall2, fontSmall3, fontSmall4, fontSmall5, fontSmall6, fontSmall7, fontSmall8, fontSmall9, fontSmall0;
|
83
|
90
|
@synthesize fontLarge1, fontLarge2, fontLarge3, fontLarge4, fontLarge5, fontLarge6, fontLarge7, fontLarge8, fontLarge9, fontLarge0;
|
|
@@ -86,7 +93,7 @@
|
86
|
93
|
@synthesize dateDigit0, dateDigit1, dateDigit2, dateDigit3;
|
87
|
94
|
@synthesize alarmDigit0, alarmDigit1, alarmDigit2, alarmDigit3;
|
88
|
95
|
@synthesize timeDigit0, timeDigit1, timeDigit2, timeDigit3, timeDigit4, timeDigit5;
|
89
|
|
-@synthesize alarmSign;
|
|
96
|
+@synthesize alarmSign, alarmDots, timeDots;
|
90
|
97
|
|
91
|
98
|
@synthesize fullSize;
|
92
|
99
|
@synthesize drawContext;
|
|
@@ -166,12 +173,16 @@
|
166
|
173
|
NSImage *fontSmallImage = [NSImage imageNamed:@"font_small"];
|
167
|
174
|
NSImage *fontLargeImage = [NSImage imageNamed:@"font_large"];
|
168
|
175
|
NSImage *alarmImage = [NSImage imageNamed:@"alarm"];
|
|
176
|
+ NSImage *dotsSmallImage = [NSImage imageNamed:@"dots_small"];
|
|
177
|
+ NSImage *dotsLargeImage = [NSImage imageNamed:@"dots_large"];
|
169
|
178
|
|
170
|
179
|
NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithAttributes:nil];
|
171
|
180
|
|
172
|
181
|
otaconGraphic = [otaconImage CGImageForProposedRect:nil context:context hints:nil];
|
173
|
182
|
bubbleGraphic = [bubbleImage CGImageForProposedRect:nil context:context hints:nil];
|
174
|
183
|
alarmGraphic = [alarmImage CGImageForProposedRect:nil context:context hints:nil];
|
|
184
|
+ dotSmallGraphic = [dotsSmallImage CGImageForProposedRect:nil context:context hints:nil];
|
|
185
|
+ dotLargeGraphic = [dotsLargeImage CGImageForProposedRect:nil context:context hints:nil];
|
175
|
186
|
eye0 = [eye0Image CGImageForProposedRect:nil context:context hints:nil];
|
176
|
187
|
eye1 = [eye1Image CGImageForProposedRect:nil context:context hints:nil];
|
177
|
188
|
eye2 = [eye2Image CGImageForProposedRect:nil context:context hints:nil];
|
|
@@ -260,17 +271,20 @@
|
260
|
271
|
dateDigit1 = 8;
|
261
|
272
|
dateDigit2 = 8;
|
262
|
273
|
dateDigit3 = 8;
|
263
|
|
- alarmDigit0 = 8;
|
264
|
|
- alarmDigit1 = 8;
|
265
|
|
- alarmDigit2 = 8;
|
266
|
|
- alarmDigit3 = 8;
|
267
|
274
|
timeDigit0 = 8;
|
268
|
275
|
timeDigit1 = 8;
|
269
|
276
|
timeDigit2 = 8;
|
270
|
277
|
timeDigit3 = 8;
|
271
|
278
|
timeDigit4 = 8;
|
272
|
279
|
timeDigit5 = 8;
|
273
|
|
- alarmSign = YES;
|
|
280
|
+ timeDots = YES;
|
|
281
|
+
|
|
282
|
+ alarmDigit0 = -1;
|
|
283
|
+ alarmDigit1 = -1;
|
|
284
|
+ alarmDigit2 = -1;
|
|
285
|
+ alarmDigit3 = -1;
|
|
286
|
+ alarmSign = NO;
|
|
287
|
+ alarmDots = NO;
|
274
|
288
|
|
275
|
289
|
return self;
|
276
|
290
|
}
|
|
@@ -279,32 +293,38 @@
|
279
|
293
|
return fullSize;
|
280
|
294
|
}
|
281
|
295
|
|
|
296
|
+#define CONVERT_DECIMAL(num, ten, one) do { \
|
|
297
|
+ if (num >= 50) { \
|
|
298
|
+ ten = 5; \
|
|
299
|
+ one = num - 50; \
|
|
300
|
+ } else if (num >= 40) { \
|
|
301
|
+ ten = 4; \
|
|
302
|
+ one = num - 40; \
|
|
303
|
+ } else if (num >= 30) { \
|
|
304
|
+ ten = 3; \
|
|
305
|
+ one = num - 30; \
|
|
306
|
+ } else if (num >= 20) { \
|
|
307
|
+ ten = 2; \
|
|
308
|
+ one = num - 20; \
|
|
309
|
+ } else if (num >= 10) { \
|
|
310
|
+ ten = 1; \
|
|
311
|
+ one = num - 10; \
|
|
312
|
+ } else { \
|
|
313
|
+ ten = 0; \
|
|
314
|
+ one = num; \
|
|
315
|
+ } \
|
|
316
|
+} while (0);
|
|
317
|
+
|
282
|
318
|
- (void)drawWithDate:(NSDate *)date {
|
283
|
319
|
NSCalendarUnit comps = NSWeekdayCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
|
284
|
320
|
NSDateComponents *components = [[NSCalendar currentCalendar] components:comps fromDate:date];
|
285
|
321
|
dayOfWeek = [components weekday] - 2; // map sun=1 to sun=-1
|
286
|
322
|
|
287
|
|
- if ([components month] >= 10) {
|
288
|
|
- dateDigit0 = 1;
|
289
|
|
- dateDigit1 = [components month] - 10;
|
290
|
|
- } else {
|
291
|
|
- dateDigit0 = 0;
|
292
|
|
- dateDigit1 = [components month];
|
293
|
|
- }
|
294
|
|
-
|
295
|
|
- if ([components day] >= 30) {
|
296
|
|
- dateDigit2 = 3;
|
297
|
|
- dateDigit3 = [components day] - 30;
|
298
|
|
- } else if ([components day] >= 20) {
|
299
|
|
- dateDigit2 = 2;
|
300
|
|
- dateDigit3 = [components day] - 20;
|
301
|
|
- } else if ([components day] >= 10) {
|
302
|
|
- dateDigit2 = 1;
|
303
|
|
- dateDigit3 = [components day] - 10;
|
304
|
|
- } else {
|
305
|
|
- dateDigit2 = 0;
|
306
|
|
- dateDigit3 = [components day];
|
307
|
|
- }
|
|
323
|
+ CONVERT_DECIMAL([components month], dateDigit0, dateDigit1);
|
|
324
|
+ CONVERT_DECIMAL([components day], dateDigit2, dateDigit3);
|
|
325
|
+ CONVERT_DECIMAL([components hour], timeDigit0, timeDigit1);
|
|
326
|
+ CONVERT_DECIMAL([components minute], timeDigit2, timeDigit3);
|
|
327
|
+ CONVERT_DECIMAL([components second], timeDigit4, timeDigit5);
|
308
|
328
|
}
|
309
|
329
|
|
310
|
330
|
- (void)drawWithEye:(NSInteger)eyeIndex {
|
|
@@ -382,6 +402,17 @@
|
382
|
402
|
CGContextDrawImage(drawContext, size, [self largeHelper:timeDigit5]);
|
383
|
403
|
}
|
384
|
404
|
|
|
405
|
+ // Draw dots between hours, minutes and seconds
|
|
406
|
+ if (timeDots == YES) {
|
|
407
|
+ size.size.width = CGImageGetWidth(dotLargeGraphic);
|
|
408
|
+ size.size.height = CGImageGetHeight(dotLargeGraphic);
|
|
409
|
+ size.origin.y = DOTS_TIME_Y_OFFSET;
|
|
410
|
+ size.origin.x = DOTS_TIME_X0_OFFSET;
|
|
411
|
+ CGContextDrawImage(drawContext, size, dotLargeGraphic);
|
|
412
|
+ size.origin.x = DOTS_TIME_X1_OFFSET;
|
|
413
|
+ CGContextDrawImage(drawContext, size, dotLargeGraphic);
|
|
414
|
+ }
|
|
415
|
+
|
385
|
416
|
// Draw Alarm Graphic
|
386
|
417
|
if (alarmSign == YES) {
|
387
|
418
|
size.size.width = CGImageGetWidth(alarmGraphic);
|
|
@@ -391,6 +422,15 @@
|
391
|
422
|
CGContextDrawImage(drawContext, size, alarmGraphic);
|
392
|
423
|
}
|
393
|
424
|
|
|
425
|
+ // Draw dots between alarm hours and minutes
|
|
426
|
+ if (alarmDots == YES) {
|
|
427
|
+ size.size.width = CGImageGetWidth(dotSmallGraphic);
|
|
428
|
+ size.size.height = CGImageGetHeight(dotSmallGraphic);
|
|
429
|
+ size.origin.x = DOTS_ALARM_X_OFFSET;
|
|
430
|
+ size.origin.y = DOTS_ALARM_Y_OFFSET;
|
|
431
|
+ CGContextDrawImage(drawContext, size, dotSmallGraphic);
|
|
432
|
+ }
|
|
433
|
+
|
394
|
434
|
// Draw Alarm Time
|
395
|
435
|
size.size.width = FONT_SMALL_WIDTH;
|
396
|
436
|
size.size.height = FONT_SMALL_HEIGHT;
|