summaryrefslogtreecommitdiff
path: root/scene/2d/back_buffer_copy.cpp
blob: 245b3ba7ebd177489a84d852e453f670dd7aa3b6 (plain)
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
#include "back_buffer_copy.h"

void BackBufferCopy::_update_copy_mode() {

	switch(copy_mode) {

		case COPY_MODE_DISALED: {

			VS::get_singleton()->canvas_item_set_copy_to_backbuffer(get_canvas_item(),false,Rect2());
		} break;
		case COPY_MODE_RECT: {

			VS::get_singleton()->canvas_item_set_copy_to_backbuffer(get_canvas_item(),true,rect);
		} break;
		case COPY_MODE_VIEWPORT: {

			VS::get_singleton()->canvas_item_set_copy_to_backbuffer(get_canvas_item(),true,Rect2());

		} break;

	}
}

Rect2 BackBufferCopy::get_item_rect() const {

	return rect;
}

void BackBufferCopy::set_rect(const Rect2& p_rect) {

	rect=p_rect;
	_update_copy_mode();
}

Rect2 BackBufferCopy::get_rect() const{
	return rect;
}

void BackBufferCopy::set_copy_mode(CopyMode p_mode){

	copy_mode=p_mode;
	_update_copy_mode();
}
BackBufferCopy::CopyMode BackBufferCopy::get_copy_mode() const{

	return copy_mode;
}


void BackBufferCopy::_bind_methods() {

	ObjectTypeDB::bind_method(_MD("set_rect","rect"),&BackBufferCopy::set_rect);
	ObjectTypeDB::bind_method(_MD("get_rect"),&BackBufferCopy::get_rect);

	ObjectTypeDB::bind_method(_MD("set_copy_mode","copy_mode"),&BackBufferCopy::set_copy_mode);
	ObjectTypeDB::bind_method(_MD("get_copy_mode"),&BackBufferCopy::get_copy_mode);

	ADD_PROPERTY( PropertyInfo(Variant::INT,"copy_mode",PROPERTY_HINT_ENUM,"Disabled,Rect,Viewport"),_SCS("set_copy_mode"),_SCS("get_copy_mode"));
	ADD_PROPERTY( PropertyInfo(Variant::RECT2,"rect"),_SCS("set_rect"),_SCS("get_rect"));

	BIND_CONSTANT( COPY_MODE_DISALED );
	BIND_CONSTANT( COPY_MODE_RECT );
	BIND_CONSTANT( COPY_MODE_VIEWPORT );

}

BackBufferCopy::BackBufferCopy(){

	rect=Rect2(-100,-100,200,200);
	copy_mode=COPY_MODE_RECT;
	_update_copy_mode();
}
BackBufferCopy::~BackBufferCopy(){

}