|
|
1.1 root 1: #import <appkit/appkit.h>
2: #import <video/NXLiveVideoView.h>
3: #import "MyApp.h"
4:
5: @implementation MyApp
6:
7: - appDidInit:sender
8: {
9: NXRect winRect;
10: int type;
11: NXSize vidSize;
12:
13: [nretWindow getFrame:&winRect];
14: [nretWindow setBackgroundGray:NX_WHITE];
15: [window setBecomeKeyOnlyIfNeeded:YES];
16: // Get the screen size.
17: if(![NXLiveVideoView doesWindowSupportVideo:bufWindow
18: standard:&type size:&vidSize])
19: {
20: NXRunAlertPanel("No Video Present","This machine is not capable of running video applications. Since this program is exclusively for Video, It will now exit","OK",NULL,NULL);
21: [self terminate:self];
22: }
23: [bufWindow sizeWindow:vidSize.width :vidSize.height];
24: [bufWindow makeKeyWindow];
25: [nretWindow sizeWindow:vidSize.width :vidSize.height];
26: [videoView grab];
27: buffed=YES;
28: mode = NX_FROMINPUT;
29: return self;
30: }
31:
32: - setMode:sender
33: {
34: switch([[sender selectedCell] tag])
35: {
36: case 0:
37: if(mode==NX_FROMINPUT) break;mode=NX_FROMINPUT;
38: [videoView stop:self];
39: [videoView setOutputMode:NX_FROMINPUT];
40: [outputBox removeFromSuperview];
41: [[window contentView] addSubview:inputBox];
42: if(!buffed) {[self swapWindows:self];[retainedButton setState:0];}
43: break;
44: case 1:
45: if(mode==NX_FROMVIEW) break;mode=NX_FROMVIEW;
46: [videoView stop:self];
47: [videoView setOutputMode:NX_FROMVIEW];
48: [inputBox removeFromSuperview];
49: [[window contentView] addSubview:outputBox];
50: break;
51: }
52: [[window contentView] display];
53: [videoView display];
54: return self;
55: }
56:
57: - setInput:sender
58: {
59: int types[] = {NX_VIDEOIN1,NX_VIDEOIN2,NX_VIDEOIN3};
60:
61: [videoView selectInput:types[[[sender selectedCell] tag]]];
62: return self;
63: }
64:
65: - setBrightness:sender
66: {
67: [videoView setInputBrightness:[sender floatValue]];
68: return self;
69: }
70:
71: - setGamma:sender
72: {
73: [videoView setInputGamma:[sender floatValue]];
74: return self;
75: }
76:
77: - setOutGamma:sender
78: {
79: [videoView setOutputGamma:[sender floatValue]];
80: return self;
81: }
82:
83: - setHue:sender
84: {
85: [videoView setInputHue:[sender floatValue]];
86: return self;
87: }
88:
89: - setSaturation:sender
90: {
91: [videoView setInputSaturation:[sender floatValue]];
92: return self;
93: }
94:
95: - setSharpness:sender
96: {
97: [videoView setInputSharpness:[sender floatValue]];
98: return self;
99: }
100:
101: - swapWindows:sender
102: {
103: BOOL videoWasOn = [videoView isVideoActive];
104: [videoView stop:self];
105: if(buffed)
106: {
107: buffed = NO;
108: [videoView removeFromSuperview];
109: [[nretWindow contentView] addSubview:videoView];
110: [nretWindow makeKeyAndOrderFront:self];
111: [nretWindow display];
112: [bufWindow close];
113: }
114: else
115: {
116: buffed = YES;
117: [videoView removeFromSuperview];
118: [[bufWindow contentView] addSubview:videoView];
119: [videoView display];
120: [bufWindow makeKeyAndOrderFront:self];
121: [nretWindow close];
122: }
123: if(videoWasOn) [videoView start:self];
124: return self;
125: }
126:
127: - openImage:sender
128: {
129: if(mode==NX_FROMINPUT)
130: {
131: mode=NX_FROMVIEW;
132: [videoView stop:self];
133: [videoView setOutputMode:NX_FROMVIEW];
134: [inputBox removeFromSuperview];
135: [[window contentView] addSubview:outputBox];
136: [ioPopup setTitle:"Output"];
137: [window display];
138: }
139: [videoView setImage:self];
140: return self;
141: }
142:
143: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.