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
|
//
// Lynkeos
// $Id: MyImageListItem.h,v 1.8 2005/01/27 23:07:35 j-etienne Exp $
//
// Created by Jean-Etienne LAMIAUD on Tue Sep 30 2003.
// Copyright (c) 2003-2005. Jean-Etienne LAMIAUD
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
/*!
* @header
* @abstract Image list item classes
* @discussion The root class for image list items is MyImageListItem. It is
* further subclassed in concrete classes for still images (MyImage),
* Quicktime movies (MyMovie)and images from a movie (MyMovieImage).
*/
#ifndef __MYIMAGELISTITEM_H
#define __MYIMAGELISTITEM_H
#import <Foundation/Foundation.h>
#ifdef GNUSTEP
#import "LynkeosCommon.h"
#import <AppKit/NSImage.h>
#import "LynkeosFfmpegMovie.h"
#endif
/*!
* @class MyImageListItem
* @abstract Common class for all image list items
* @discussion It provides a unique interface to the outline view, and the
* common data and methods for the image list items.
* @ingroup Models
*/
@interface MyImageListItem : NSObject <NSCoding>
{
@protected
NSURL* _itemURL;
NSString* _itemName; // To be displayed to user
int _selection_state; // Can be tri state
bool _hasSearchSquare; // Has image its own search square ?
MyIntegerPoint _searchSquareOrigin; // Size is constant for the whole list
bool _aligned; // Was realigned (or not)
NSPoint _alignOffset;
double _quality;
}
// Initialization
- (id) initWithURL :(NSURL*)url ;
// Accessors
- (NSURL*) getURL ;
- (int) getSelectionState;
- (NSString*)getName;
- (bool) hasSearchSquare;
- (MyIntegerPoint) searchSquareOrigin;
- (bool) isAligned;
- (NSPoint) alignOffset;
- (double) getQuality;
- (NSNumber*) getIndex; // To be implemented in descendants
- (NSImage*) getImage; // Idem
- (NSSize) imageSize;
- (void) setSelected :(bool)value; // Boolean option
- (void) invalidateSearchSquare ;
- (void) setSearchSquareOrigin :(MyIntegerPoint)origin;
- (void)invalidateAlignment ;
- (void) setAlignOffset :(NSPoint)offset;
- (void) setQuality :(double)quality;
// Creator
+ (id) imageListItemWithURL :(NSURL*)url;
@end
/*!
* @class MyImage
* @abstract Still image model class
* @discussion It only overrides some methods from MyImageListItem
* and provide the non implemented ones.
* @ingroup Models
*/
@interface MyImage : MyImageListItem
@end
/*!
* @class MyMovieImage
* @abstract Movie image model class
* @discussion The image is characterized by the movie it comes from
* and the movie time at which it is contained.
*
* The index is there to be displayed in outline view
* @ingroup Models
*/
@interface MyMovieImage : MyImageListItem
{
@private
id _parent;
TimeValue _time;
long _index;
}
// Initialization
- (id) initWithTime :(TimeValue)time parent:(id)up index:(long)index ;
// Accessors
- (TimeValue) getTime ;
- (id) getParent ;
- (void) setParent :(id)parent ;
// Creator
+ (id) movieImageWithTime :(TimeValue)time parent:(id)up index:(long)index ;
@end
/*!
* @class MyMovie
* @abstract Movie model class
* @discussion It keeps track of all its MyMovieImage, provides action
* on them and allows to retrieve the NSImage
* @ingroup Models
*/
@interface MyMovie : MyImageListItem <NSLocking>
{
@private
NSMovie *_movie;
NSMutableArray * _images;
NSLock *_qtLock;
}
- (NSMovie*) getMovie ;
- (int) numberOfImages ;
- (int) indexOfImage :(MyMovieImage*)item ;
- (MyMovieImage*) getMovieImageAtIndex :(int)index ;
- (NSImage*) getImageAtIndex :(int)index ;
- (void) addMovieImage :(MyMovieImage*)item ;
- (void) deleteMovieImage :(MyMovieImage*)item ;
- (void) imageSelectionChanged ;
@end
#endif
|