/* * Copyright (C) 2005 Apple Computer, Inc. All rights reserved. * Copyright (C) 2006 Nefaur Khandker All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #import "DrawTestDocument.h" #import "DrawTestView.h" #import "DrawTestToolbarController.h" #import #import #import @implementation DrawTestDocument - (id)initWithType:(NSString *)typeName error:(NSError **)outError { if (outError) { NSDictionary *errorInfo = [NSDictionary dictionaryWithObjectsAndKeys: @"No document could be created.", NSLocalizedDescriptionKey, @"New document creation not yet supported.", NSLocalizedFailureReasonErrorKey, nil]; *outError = [NSError errorWithDomain:NSCocoaErrorDomain code:0 userInfo:errorInfo]; } [self release]; return nil; } - (void)dealloc { [toolbarController release]; [super dealloc]; } - (NSString *)windowNibName { return @"DrawTestDocument"; } - (BOOL)readFromFile:(NSString *)filename ofType:(NSString *)docType { // TODO: Check the validity of the document before returning YES. return YES; } - (void)windowControllerDidLoadNib:(NSWindowController *)aController { [super windowControllerDidLoadNib:aController]; toolbarController = [[DrawTestToolbarController alloc] initWithDrawView:drawView]; [drawView setDocument:[self fileURL]]; } - (IBAction)dumpSVGToConsole:(id)sender { WebDataSource* dataSource = [[drawView mainFrame] dataSource]; NSLog(@"SVG Markup for file %@:\n%@", [self fileURL], [[dataSource representation] documentSource]); } - (IBAction)openSourceForSelection:(id)sender { // TODO: The "path" message (below) will not produce a valid pathname if we are dealing with a remote file. NSString *filename = [[self fileURL] path]; [[NSWorkspace sharedWorkspace] openFile:filename withApplication:@"TextEdit"]; } - (NSData *)dataRepresentationOfType:(NSString *)aType { WebDataSource* dataSource = [[drawView mainFrame] dataSource]; return [dataSource data]; } #pragma mark - #pragma mark Debug Methods - (IBAction)toggleDebugDrawer:(id)sender { [debugDrawer toggle:sender]; } - (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item { return nil; } - (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item { return NO; } - (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item { return 0; } - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { return nil; } - (IBAction)runWindowResizeTest:(id)sender { NSWindow *window = [drawView window]; NSScreen *screen = [window screen]; float screenHeight = [screen visibleFrame].size.height; NSRect originalFrame = [window frame]; // initial setup BOOL toolbarVisible = [[window toolbar] isVisible]; if (toolbarVisible) [window toggleToolbarShown:self]; [window setFrame:NSMakeRect(0,screenHeight-100,100,100) display:YES]; // grab time. CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); // run test for (int x = 0; x < 3; x++) { for (float size = 100; size < 500.f; size += 20.f) { [window setFrame:NSMakeRect(0, screenHeight-size, size, size) display:YES]; } } double elapsed = CFAbsoluteTimeGetCurrent() - start; // log NSLog(@"Window resize test: %fs", elapsed); // restore if (toolbarVisible) [window toggleToolbarShown:self]; [window setFrame:originalFrame display:YES]; } @end