File: MyImageListItem.h

package info (click to toggle)
lynkeos.app 1.2-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 3,892 kB
  • ctags: 256
  • sloc: objc: 7,122; ansic: 695; sh: 206; makefile: 58
file content (155 lines) | stat: -rw-r--r-- 4,424 bytes parent folder | download | duplicates (6)
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