Revision: 4627
http://skim-app.svn.sourceforge.net/skim-app/?rev=4627&view=rev
Author: hofman
Date: 2008-09-14 21:28:00 +0000 (Sun, 14 Sep 2008)
Log Message:
-----------
More code for ink note support. Add images for ink note. Implement drawing
code, use a temporary path to draw and after mouseup add a new note. Fix color
of ink note to red.
Modified Paths:
--------------
trunk/InitialUserDefaults.plist
trunk/NSImage_SKExtensions.h
trunk/NSImage_SKExtensions.m
trunk/NSString_SKExtensions.m
trunk/SKAnnotationTypeImageCell.m
trunk/SKMainWindowController_UI.m
trunk/SKPDFView.h
trunk/SKPDFView.m
Modified: trunk/InitialUserDefaults.plist
===================================================================
--- trunk/InitialUserDefaults.plist 2008-09-14 17:40:55 UTC (rev 4626)
+++ trunk/InitialUserDefaults.plist 2008-09-14 21:28:00 UTC (rev 4627)
@@ -129,6 +129,11 @@
BAt0eXBlZHN0cmVhbYED6IQBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm
ZmZmAAABAYY=
</data>
+ <key>SKInkNoteColor</key>
+ <data>
+ BAt0eXBlZHN0cmVhbYED6IQBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm
+ ZmZmAQAAAYY=
+ </data>
<key>SKCircleNoteInteriorColor</key>
<data>
BAt0eXBlZHN0cmVhbYED6IQBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMDhAJm
@@ -144,11 +149,6 @@
BAt0eXBlZHN0cmVhbYED6IQBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm
ZmZmAAAAAYY=
</data>
- <key>SKInkNoteColor</key>
- <data>
- BAt0eXBlZHN0cmVhbYED6IQBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMDhAJm
- ZgAAhg==
- </data>
<key>SKFreeTextNoteLineWidth</key>
<real>1.0</real>
<key>SKFreeTextNoteLineStyle</key>
Modified: trunk/NSImage_SKExtensions.h
===================================================================
--- trunk/NSImage_SKExtensions.h 2008-09-14 17:40:55 UTC (rev 4626)
+++ trunk/NSImage_SKExtensions.h 2008-09-14 21:28:00 UTC (rev 4627)
@@ -70,6 +70,7 @@
extern NSString *SKImageNameToolbarUnderlineNote;
extern NSString *SKImageNameToolbarStrikeOutNote;
extern NSString *SKImageNameToolbarLineNote;
+extern NSString *SKImageNameToolbarInkNote;
extern NSString *SKImageNameToolbarTextNoteMenu;
extern NSString *SKImageNameToolbarAnchoredNoteMenu;
extern NSString *SKImageNameToolbarCircleNoteMenu;
@@ -78,6 +79,7 @@
extern NSString *SKImageNameToolbarUnderlineNoteMenu;
extern NSString *SKImageNameToolbarStrikeOutNoteMenu;
extern NSString *SKImageNameToolbarLineNoteMenu;
+extern NSString *SKImageNameToolbarInkNoteMenu;
extern NSString *SKImageNameToolbarAddTextNote;
extern NSString *SKImageNameToolbarAddAnchoredNote;
extern NSString *SKImageNameToolbarAddCircleNote;
@@ -86,6 +88,7 @@
extern NSString *SKImageNameToolbarAddUnderlineNote;
extern NSString *SKImageNameToolbarAddStrikeOutNote;
extern NSString *SKImageNameToolbarAddLineNote;
+extern NSString *SKImageNameToolbarAddInkNote;
extern NSString *SKImageNameToolbarAddTextNoteMenu;
extern NSString *SKImageNameToolbarAddAnchoredNoteMenu;
extern NSString *SKImageNameToolbarAddCircleNoteMenu;
@@ -94,6 +97,7 @@
extern NSString *SKImageNameToolbarAddUnderlineNoteMenu;
extern NSString *SKImageNameToolbarAddStrikeOutNoteMenu;
extern NSString *SKImageNameToolbarAddLineNoteMenu;
+extern NSString *SKImageNameToolbarAddInkNoteMenu;
extern NSString *SKImageNameToolbarTextTool;
extern NSString *SKImageNameToolbarMoveTool;
extern NSString *SKImageNameToolbarMagnifyTool;
@@ -115,6 +119,7 @@
extern NSString *SKImageNameUnderlineNoteAdorn;
extern NSString *SKImageNameStrikeOutNoteAdorn;
extern NSString *SKImageNameLineNoteAdorn;
+extern NSString *SKImageNameInkNoteAdorn;
extern NSString *SKImageNameResizeRightDownCursor;
extern NSString *SKImageNameResizeLeftDownCursor;
Modified: trunk/NSImage_SKExtensions.m
===================================================================
--- trunk/NSImage_SKExtensions.m 2008-09-14 17:40:55 UTC (rev 4626)
+++ trunk/NSImage_SKExtensions.m 2008-09-14 21:28:00 UTC (rev 4627)
@@ -74,6 +74,7 @@
NSString *SKImageNameToolbarUnderlineNote = @"ToolbarUnderlineNote";
NSString *SKImageNameToolbarStrikeOutNote = @"ToolbarStrikeOutNote";
NSString *SKImageNameToolbarLineNote = @"ToolbarLineNote";
+NSString *SKImageNameToolbarInkNote = @"ToolbarInkNote";
NSString *SKImageNameToolbarTextNoteMenu = @"ToolbarTextNoteMenu";
NSString *SKImageNameToolbarAnchoredNoteMenu = @"ToolbarAnchoredNoteMenu";
NSString *SKImageNameToolbarCircleNoteMenu = @"ToolbarCircleNoteMenu";
@@ -82,6 +83,7 @@
NSString *SKImageNameToolbarUnderlineNoteMenu = @"ToolbarUnderlineNoteMenu";
NSString *SKImageNameToolbarStrikeOutNoteMenu = @"ToolbarStrikeOutNoteMenu";
NSString *SKImageNameToolbarLineNoteMenu = @"ToolbarLineNoteMenu";
+NSString *SKImageNameToolbarInkNoteMenu = @"ToolbarInkNoteMenu";
NSString *SKImageNameToolbarAddTextNote = @"ToolbarAddTextNote";
NSString *SKImageNameToolbarAddAnchoredNote = @"ToolbarAddAnchoredNote";
NSString *SKImageNameToolbarAddCircleNote = @"ToolbarAddCircleNote";
@@ -90,6 +92,7 @@
NSString *SKImageNameToolbarAddUnderlineNote = @"ToolbarAddUnderlineNote";
NSString *SKImageNameToolbarAddStrikeOutNote = @"ToolbarAddStrikeOutNote";
NSString *SKImageNameToolbarAddLineNote = @"ToolbarAddLineNote";
+NSString *SKImageNameToolbarAddInkNote = @"ToolbarAddInkNote";
NSString *SKImageNameToolbarAddTextNoteMenu = @"ToolbarAddTextNoteMenu";
NSString *SKImageNameToolbarAddAnchoredNoteMenu =
@"ToolbarAddAnchoredNoteMenu";
NSString *SKImageNameToolbarAddCircleNoteMenu = @"ToolbarAddCircleNoteMenu";
@@ -98,6 +101,7 @@
NSString *SKImageNameToolbarAddUnderlineNoteMenu =
@"ToolbarAddUnderlineNoteMenu";
NSString *SKImageNameToolbarAddStrikeOutNoteMenu =
@"ToolbarAddStrikeOutNoteMenu";
NSString *SKImageNameToolbarAddLineNoteMenu = @"ToolbarAddLineNoteMenu";
+NSString *SKImageNameToolbarAddInkNoteMenu = @"ToolbarAddInkNoteMenu";
NSString *SKImageNameToolbarTextTool = @"ToolbarTextTool";
NSString *SKImageNameToolbarMoveTool = @"ToolbarMoveTool";
NSString *SKImageNameToolbarMagnifyTool = @"ToolbarMagnifyTool";
@@ -119,6 +123,7 @@
NSString *SKImageNameUnderlineNoteAdorn = @"UnderlineNoteAdorn";
NSString *SKImageNameStrikeOutNoteAdorn = @"StrikeOutNoteAdorn";
NSString *SKImageNameLineNoteAdorn = @"LineNoteAdorn";
+NSString *SKImageNameInkNoteAdorn = @"InkNoteAdorn";
NSString *SKImageNameResizeRightDownCursor = @"ResizeRightDownCursor";
NSString *SKImageNameResizeLeftDownCursor = @"ResizeLeftDownCursor";
@@ -245,6 +250,7 @@
static NSImage *toolbarUnderlineNoteImage = nil;
static NSImage *toolbarStrikeOutNoteImage = nil;
static NSImage *toolbarLineNoteImage = nil;
+ static NSImage *toolbarInkNoteImage = nil;
static NSImage *toolbarTextNoteMenuImage = nil;
static NSImage *toolbarAnchoredNoteMenuImage = nil;
static NSImage *toolbarCircleNoteMenuImage = nil;
@@ -253,6 +259,7 @@
static NSImage *toolbarUnderlineNoteMenuImage = nil;
static NSImage *toolbarStrikeOutNoteMenuImage = nil;
static NSImage *toolbarLineNoteMenuImage = nil;
+ static NSImage *toolbarInkNoteMenuImage = nil;
static NSImage *toolbarAddTextNoteImage = nil;
static NSImage *toolbarAddAnchoredNoteImage = nil;
static NSImage *toolbarAddCircleNoteImage = nil;
@@ -261,6 +268,7 @@
static NSImage *toolbarAddUnderlineNoteImage = nil;
static NSImage *toolbarAddStrikeOutNoteImage = nil;
static NSImage *toolbarAddLineNoteImage = nil;
+ static NSImage *toolbarAddInkNoteImage = nil;
static NSImage *toolbarAddTextNoteMenuImage = nil;
static NSImage *toolbarAddAnchoredNoteMenuImage = nil;
static NSImage *toolbarAddCircleNoteMenuImage = nil;
@@ -269,6 +277,7 @@
static NSImage *toolbarAddUnderlineNoteMenuImage = nil;
static NSImage *toolbarAddStrikeOutNoteMenuImage = nil;
static NSImage *toolbarAddLineNoteMenuImage = nil;
+ static NSImage *toolbarAddInkNoteMenuImage = nil;
static NSImage *toolbarTextToolImage = nil;
static NSImage *toolbarMoveToolImage = nil;
static NSImage *toolbarMagnifyToolImage = nil;
@@ -1239,7 +1248,34 @@
toolbarAddLineNoteMenuImage = [toolbarAddLineNoteImage copyWithMenuBadge];
[toolbarAddLineNoteMenuImage setName:SKImageNameToolbarAddLineNoteMenu];
+
+ toolbarInkNoteImage = [[NSImage alloc] initWithSize:NSMakeSize(27.0,
19.0)];
+ [toolbarInkNoteImage lockFocus];
+ [NSGraphicsContext saveGraphicsState];
+ [[NSColor clearColor] setFill];
+ NSRectFill(NSMakeRect(0.0, 0.0, 27.0, 19.0));
+ [shadow2 set];
+ [[NSColor colorWithCalibratedRed:0.706 green:0.0 blue:0.0 alpha:1.0]
setStroke];
+ path = [NSBezierPath bezierPath];
+ [path moveToPoint:NSMakePoint(6.0, 10.0)];
+ [path curveToPoint:NSMakePoint(12.0, 10.0) controlPoint1:NSMakePoint(9.0,
5.0) controlPoint2:NSMakePoint(9.0, 5.0)];
+ [path curveToPoint:NSMakePoint(18.0, 10.0) controlPoint1:NSMakePoint(15.0,
16.0) controlPoint2:NSMakePoint(15.0, 16.0)];
+ [path setLineWidth:2.0];
+ [path stroke];
+ [path setLineWidth:1.0];
+ [NSGraphicsContext restoreGraphicsState];
+ [toolbarInkNoteImage unlockFocus];
+ [toolbarInkNoteImage setName:SKImageNameToolbarInkNote];
+ toolbarInkNoteMenuImage = [toolbarInkNoteImage copyWithMenuBadge];
+ [toolbarInkNoteMenuImage setName:SKImageNameToolbarInkNoteMenu];
+
+ toolbarAddInkNoteImage = [toolbarInkNoteImage copyWithAddBadge];
+ [toolbarAddInkNoteImage setName:SKImageNameToolbarAddInkNote];
+
+ toolbarAddInkNoteMenuImage = [toolbarAddInkNoteImage copyWithMenuBadge];
+ [toolbarAddInkNoteMenuImage setName:SKImageNameToolbarAddInkNoteMenu];
+
toolbarTextToolImage = [[NSImage alloc] initWithSize:NSMakeSize(27.0,
19.0)];
[toolbarTextToolImage lockFocus];
[NSGraphicsContext saveGraphicsState];
@@ -1420,6 +1456,7 @@
static NSImage *underlineNoteAdornImage = nil;
static NSImage *strikeOutNoteAdornImage = nil;
static NSImage *lineNoteAdornImage = nil;
+ static NSImage *inkNoteAdornImage = nil;
if (outlineViewAdornImage)
return;
@@ -1800,6 +1837,22 @@
[lineNoteAdornImage unlockFocus];
[lineNoteAdornImage setName:SKImageNameLineNoteAdorn];
+ inkNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
+ [inkNoteAdornImage lockFocus];
+ [NSGraphicsContext saveGraphicsState];
+ [[NSColor clearColor] setFill];
+ NSRectFill(noteRect);
+ [shadow1 set];
+ [[NSColor colorWithCalibratedWhite:0.0 alpha:0.70] setStroke];
+ path = [NSBezierPath bezierPath];
+ [path moveToPoint:NSMakePoint(2.0, 5.5)];
+ [path curveToPoint:NSMakePoint(7.5, 5.5) controlPoint1:NSMakePoint(4.5,
5.5) controlPoint2:NSMakePoint(5.0, 5.5)];
+ [path curveToPoint:NSMakePoint(13.0, 5.5) controlPoint1:NSMakePoint(10.0,
5.5) controlPoint2:NSMakePoint(10.5, 5.5)];
+ [path stroke];
+ [NSGraphicsContext restoreGraphicsState];
+ [inkNoteAdornImage unlockFocus];
+ [inkNoteAdornImage setName:SKImageNameInkNoteAdorn];
+
[shadow1 release];
}
Modified: trunk/NSString_SKExtensions.m
===================================================================
--- trunk/NSString_SKExtensions.m 2008-09-14 17:40:55 UTC (rev 4626)
+++ trunk/NSString_SKExtensions.m 2008-09-14 21:28:00 UTC (rev 4627)
@@ -415,8 +415,8 @@
imageName = SKImageNameStrikeOutNoteAdorn;
else if ([self isEqualToString:SKNLineString])
imageName = SKImageNameLineNoteAdorn;
- //else if ([self isEqualToString:SKNInkString])
- // imageName = SKImageNameInkNoteAdorn;
+ else if ([self isEqualToString:SKNInkString])
+ imageName = SKImageNameInkNoteAdorn;
if (imageName) {
NSImage *image = [NSImage imageNamed:imageName];
Modified: trunk/SKAnnotationTypeImageCell.m
===================================================================
--- trunk/SKAnnotationTypeImageCell.m 2008-09-14 17:40:55 UTC (rev 4626)
+++ trunk/SKAnnotationTypeImageCell.m 2008-09-14 21:28:00 UTC (rev 4627)
@@ -100,8 +100,8 @@
if (noteImages == nil) {
CIFilter *filter = [CIFilter filterWithName:@"CIColorInvert"];
- noteImages = [[NSMutableDictionary alloc] initWithCapacity:8];
- invertedNoteImages = [[NSMutableDictionary alloc] initWithCapacity:8];
+ noteImages = [[NSMutableDictionary alloc] initWithCapacity:9];
+ invertedNoteImages = [[NSMutableDictionary alloc] initWithCapacity:9];
SKAddNamedAndFilteredImageForKey(noteImages, invertedNoteImages,
SKImageNameTextNoteAdorn, SKNFreeTextString, filter);
SKAddNamedAndFilteredImageForKey(noteImages, invertedNoteImages,
SKImageNameAnchoredNoteAdorn, SKNNoteString, filter);
@@ -111,7 +111,7 @@
SKAddNamedAndFilteredImageForKey(noteImages, invertedNoteImages,
SKImageNameUnderlineNoteAdorn, SKNUnderlineString, filter);
SKAddNamedAndFilteredImageForKey(noteImages, invertedNoteImages,
SKImageNameStrikeOutNoteAdorn, SKNStrikeOutString, filter);
SKAddNamedAndFilteredImageForKey(noteImages, invertedNoteImages,
SKImageNameLineNoteAdorn, SKNLineString, filter);
- //SKAddNamedAndFilteredImageForKey(noteImages, invertedNoteImages,
SKImageNameInkNoteAdorn, SKNInkString, filter);
+ SKAddNamedAndFilteredImageForKey(noteImages, invertedNoteImages,
SKImageNameInkNoteAdorn, SKNInkString, filter);
}
BOOL isSelected = [self isHighlighted] && [[controlView window]
isKeyWindow] && [[[controlView window] firstResponder] isEqual:controlView];
Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m 2008-09-14 17:40:55 UTC (rev 4626)
+++ trunk/SKMainWindowController_UI.m 2008-09-14 21:28:00 UTC (rev 4627)
@@ -70,7 +70,7 @@
static NSString *SKMainWindowTypeColumnIdentifer = @"type";
static NSString *SKMainWindowImageColumnIdentifer = @"image";
-static NSString *noteToolImageNames[] = {@"ToolbarTextNoteMenu",
@"ToolbarAnchoredNoteMenu", @"ToolbarCircleNoteMenu", @"ToolbarSquareNoteMenu",
@"ToolbarHighlightNoteMenu", @"ToolbarUnderlineNoteMenu",
@"ToolbarStrikeOutNoteMenu", @"ToolbarLineNoteMenu"};
+static NSString *noteToolImageNames[] = {@"ToolbarTextNoteMenu",
@"ToolbarAnchoredNoteMenu", @"ToolbarCircleNoteMenu", @"ToolbarSquareNoteMenu",
@"ToolbarHighlightNoteMenu", @"ToolbarUnderlineNoteMenu",
@"ToolbarStrikeOutNoteMenu", @"ToolbarLineNoteMenu", @"ToolbarInkNoteMenu"};
static NSString *SKDisableTableToolTipsKey = @"SKDisableTableToolTips";
Modified: trunk/SKPDFView.h
===================================================================
--- trunk/SKPDFView.h 2008-09-14 17:40:55 UTC (rev 4626)
+++ trunk/SKPDFView.h 2008-09-14 21:28:00 UTC (rev 4627)
@@ -125,6 +125,8 @@
BOOL didSelect;
BOOL mouseDownInAnnotation;
int dragMask;
+ NSBezierPath *bezierPath;
+ unsigned int pathPageIndex;
int trackingRect;
CFMutableArrayRef PDFToolTipRects;
Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m 2008-09-14 17:40:55 UTC (rev 4626)
+++ trunk/SKPDFView.m 2008-09-14 21:28:00 UTC (rev 4627)
@@ -341,6 +341,13 @@
[self transformCGContext:context forPage:pdfPage];
SKCGContextSetDefaultRGBColorSpace(context);
+ if (bezierPath && pathPageIndex == [pdfPage pageIndex]) {
+ [NSGraphicsContext saveGraphicsState];
+ [[[NSUserDefaults standardUserDefaults] colorForKey:SKInkNoteColorKey]
setStroke];
+ [bezierPath stroke];
+ [NSGraphicsContext restoreGraphicsState];
+ }
+
NSArray *allAnnotations = [pdfPage annotations];
if (allAnnotations) {
@@ -1908,6 +1915,17 @@
case SKLineNote:
newAnnotation = [[PDFAnnotationLine alloc]
initSkimNoteWithBounds:bounds];
break;
+ case SKInkNote:
+ if (bezierPath) {
+ newAnnotation = [[PDFAnnotationInk alloc]
initSkimNoteWithBounds:bounds];
+ NSBezierPath *path = [bezierPath copy];
+ NSAffineTransform *transform = [NSAffineTransform transform];
+ [transform translateXBy:-NSMinX(bounds) yBy:-NSMinY(bounds)];
+ [path transformUsingAffineTransform:transform];
+ [(PDFAnnotationInk *)newAnnotation addBezierPath:path];
+ [path release];
+ }
+ break;
}
if (newAnnotation) {
if (text == nil)
@@ -2955,7 +2973,7 @@
newActiveAnnotation = newAnnotation;
[newAnnotation release];
} else if (toolMode == SKNoteToolMode && newActiveAnnotation == nil &&
- annotationMode != SKHighlightNote && annotationMode !=
SKUnderlineNote && annotationMode != SKStrikeOutNote &&
+ annotationMode != SKHighlightNote && annotationMode !=
SKUnderlineNote && annotationMode != SKStrikeOutNote && annotationMode !=
SKInkNote &&
NSPointInRect(pagePoint, [page boundsForBox:[self
displayBox]])) {
// add a new annotation immediately, unless this is just a click
if (annotationMode == SKAnchoredNote || NSLeftMouseDragged ==
[[NSApp nextEventMatchingMask:(NSLeftMouseUpMask | NSLeftMouseDraggedMask)
untilDate:[NSDate distantFuture] inMode:NSEventTrackingRunLoopMode dequeue:NO]
type]) {
@@ -3067,6 +3085,34 @@
}
return YES;
+ } else if (toolMode == SKNoteToolMode && annotationMode == SKInkNote &&
hideNotes == NO) {
+ BOOL didDraw = NO;
+ bezierPath = [[NSBezierPath alloc] init];
+ [bezierPath setLineWidth:[[NSUserDefaults standardUserDefaults]
floatForKey:SKInkNoteLineWidthKey]];
+ if ([bezierPath lineWidth] > 0.0 && [[NSUserDefaults
standardUserDefaults] integerForKey:SKInkNoteLineStyleKey] ==
kPDFBorderStyleDashed) {
+ NSArray *dashPattern = [[NSUserDefaults standardUserDefaults]
objectForKey:SKInkNoteDashPatternKey];
+ int count = [dashPattern count];
+ float pattern[count];
+ for (i = 0; i < count; i++)
+ pattern[i] = [[dashPattern objectAtIndex:i] floatValue];
+ [bezierPath setLineDash:pattern count:count phase:0.0];
+ }
+ [bezierPath moveToPoint:pagePoint];
+ pathPageIndex = [page pageIndex];
+ while (YES) {
+ theEvent = [[self window] nextEventMatchingMask: NSLeftMouseUpMask
| NSLeftMouseDraggedMask];
+ [bezierPath lineToPoint:[self convertPoint:[self
convertPoint:[theEvent locationInWindow] fromView:nil] toPage:page]];
+ [self setNeedsDisplayInRect:[self
convertRect:NSInsetRect([bezierPath bounds], -8.0, -8.0) fromPage:page]];
+ if ([theEvent type] == NSLeftMouseUp)
+ break;
+ didDraw = YES;
+ }
+ if (didDraw)
+ [self addAnnotationWithType:SKInkNote contents:nil page:page
bounds:NSInsetRect([bezierPath bounds], -8.0, -8.0)];
+ [bezierPath release];
+ bezierPath = nil;
+
+ return YES;
} else {
// no new active annotation
return NO;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit