File: CVScreen.mm

package info (click to toggle)
freej 0.10git20100110-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 32,080 kB
  • ctags: 22,705
  • sloc: cpp: 156,254; ansic: 25,531; sh: 13,538; perl: 4,624; makefile: 3,278; python: 2,889; objc: 1,284; asm: 1,125; ruby: 126
file content (115 lines) | stat: -rw-r--r-- 2,355 bytes parent folder | download
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
/*  FreeJ
 *  (c) Copyright 2009 Andrea Guzzo <xant@dyne.org>
 *
 * This source code is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Public License as published 
 * by the Free Software Foundation; either version 3 of the License,
 * or (at your option) any later version.
 *
 * This source code 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.
 * Please refer to the GNU Public License for more details.
 *
 * You should have received a copy of the GNU Public License along with
 * this source code; if not, write to:
 * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */

#import <CVScreen.h>
#import <CFreej.h>
#import <CVLayerView.h>
#import <CVScreenView.h>
#import <QuartzCore/CIKernel.h>
#import <QTKit/QTMovie.h>

FACTORY_REGISTER_INSTANTIATOR(ViewPort, CVScreen, Screen, cocoa);

CVScreen::CVScreen()
  : ViewPort() {

  view = NULL;
}

CVScreen::~CVScreen() {
  func("%s",__PRETTY_FUNCTION__);

}

bool CVScreen::_init() {

  return true;
}


void *CVScreen::coords(int x, int y) {
    //func("method coords(%i,%i) invoked", x, y);
    // if you are trying to get a cropped part of the layer
    // use the .pitch parameter for a pre-calculated stride
    // that is: number of bytes for one full line
    return ( x + (geo.w*y) + (uint32_t*)get_surface() );
}

void *CVScreen::get_surface() {
  if (view)
    return [view getSurface];
  return NULL;
}

void CVScreen::set_view(CVScreenView *v)
{
    view = v;
    [view setSizeWidth:geo.w Height:geo.h];
}

CVScreenView *CVScreen::get_view(void)
{
    return view;
}

void CVScreen::blit(Layer *lay)
{
    if (view)
        [view drawLayer:lay];
}

void CVScreen::show() {
    //do nothing
    /*
    if (view) 
        [view setNeedsDisplay:YES];
    */
}

bool CVScreen::add_layer(Layer *lay)
{    
    bool rc = ViewPort::add_layer(lay);
    if (rc)
        [view addLayer:lay];
    return rc;
}

void CVScreen::rem_layer(Layer *lay)
{
    ViewPort::rem_layer(lay);
    [view remLayer:lay];
}

void CVScreen::resize(int rw, int rh)
{
    lock();
    geo.w = rw;
    geo.h = rh;
    unlock();
}

int CVScreen::setres(int wx, int hx)
{
    resize(wx, hx);
    return 1;
}

void CVScreen::clear()
{
}