File: MyDocument.h

package info (click to toggle)
lynkeos.app 1.2-6
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 3,924 kB
  • sloc: objc: 7,122; ansic: 695; sh: 372; makefile: 59
file content (151 lines) | stat: -rw-r--r-- 4,842 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
//
//  Lynkeos
//  $Id: MyDocument.h,v 1.13 2005/01/27 23:00:30 j-etienne Exp $
//
//  Created by Jean-Etienne LAMIAUD on Thu Jul 29 2004.
//  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.
//

#ifndef __MYDOCUMENT_H
#define __MYDOCUMENT_H

#ifdef GNUSTEP
#else
#import <Cocoa/Cocoa.h>
#endif

#include "MyImageListItem.h"
#include "MyImageList.h"
#include "MyObjectImageList.h"
#include "MySizeLock.h"
#include "MyListProcessing.h"
#include "MyPostProcessing.h"
#include "MyImageListWindow.h"

/*!
 * @class MyDocument
 * @abstract The document controler
 * @discussion This class controls the actions on the document.
 *   It dialogs with MyImageListWindow for GUI interactions and
 *   the Models classes for document contents change.
 * @ingroup Controlers
 */
@interface MyDocument : NSDocument <MyListProcessingDelegate>
{
@private
   // Document data
   MyImageList*		_darkFrameList;   // Thermal noise images
   MyImageList*		_flatFieldList;   // Optical attenuations
   MyObjectImageList*   _imageList;       // Images to be processed
   BOOL                 _monochromeFlat;  // Wether to stack a monochrome flat

   MyAnalysisMethod      _analysisMethod;   // Selected image analysis method
   MySizeLock*          _sizeLock;        // Enforces sizes restrictions
   u_long               _stackedImageNb;  // Counter of stacked images
   NSImage*		_stackedImage;    // Processed image to display
   NSBitmapImageRep*	_stackedRep;      // Image associated representation
   long			_stack_sequence;  // Counter of stack data modif
   REAL                 _minLevel, _maxLevel;
   NSString*            _windowFrame;     // Used only upon loading

   /// Processing helper class
   MyPostProcessing*	_postProcess;

   /// Multithread control 
   NSMutableArray      *_threads;
   NSEnumerator        *_threadImageList;
   NSLock              *_alignLock;
   FFT_DATA             _alignSpectrum;

#ifdef GNUSTEP
#else
   // Sleep control
   io_connect_t         _rootPort;
#endif

   /// Window controller
   MyImageListWindow*	_myWindow;
}

/// \name Accessors
/// Read accessors to the class attributes
//@{
- (MyObjectImageList*) imageList ;      ///< Images to be processed
- (MyImageList*) darkFrameList;         ///< Thermal noise images
- (MyImageList*) flatFieldList;         ///< Optical attenuations
- (BOOL) monochromeFlat ;

- (MyAnalysisMethod) analysisMethod ;
- (MyIntegerSize) lockedSize ;
- (NSImage*) stackedImage ;
- (REAL) minLevel;
- (REAL) maxLevel;
- (NSString*) windowFrame;
//@}

/// \name GUIActions
/// Coming from window controllers
//@{
   // List
/*!
 * @method addEntry:
 * @abstract Add the item to the current list
 * @param item item to add to the list
 * @discussion The undo manager is updated for undoing the add
 */
- (void) addEntry :(MyImageListItem*)item ;
/*!
 * @method deleteEntry:
 * @abstract Remove the item from the current list
 * @param item item to remove from the list
 * @discussion The undo manager is updated for undoing the remove
 */
- (void) deleteEntry :(MyImageListItem*)item ;
- (void) changeEntrySelection :(MyImageListItem*)entry value:(BOOL)v ;
   // Align
- (void) changeReferenceEntry :(MyImageListItem*)entry ;
- (void) changeSearchSquareOrigin :(MyIntegerPoint)o ;
- (void) changeSearchSquareSide :(u_short)side ;
- (void) align ;
   // Analyze
- (void) changeAnalyzeSquareOrigin :(MyIntegerPoint)o ;
- (void) changeAnalyzeSquareSide : (u_short)side ;
- (void) changeAnalysisMethod :(MyAnalysisMethod )method;
- (void) autoChangeSelection :(double)selectThreshold;
- (void) analyzeQuality ;
   // Stack
- (void) changeCropRectangle :(MyIntegerRect)rect ;
- (void) setDoubleSize :(BOOL)ds ;
- (void) setMonochromeFlat :(BOOL)mono ;
- (void) stack ;
- (void) invalidateStackedImage ;
   // Process
- (void) postProcess :(double)dRadius :(double)dThreshold 
                     :(double)uRadius :(double) uGain ;
  // Display
- (void) adjustLevels :(REAL)minV :(REAL)maxV ;
   // Input output
- (void) saveStackedImage :(id)sender ;
- (void) exportMovie :(id)sender ;
//@}

/// Threads management
- (void)createConnectedThread :(Class)c ;

@end

#endif