framework2

Форк
0
64 строки · 2.1 Кб
1
#include "ofGraphicsCairo.h"
2
#include "ofRendererCollection.h"
3
#include "ofCairoRenderer.h"
4

5
static std::shared_ptr<ofCairoRenderer> cairoScreenshot;
6
static std::shared_ptr<ofBaseRenderer> storedRenderer;
7
static std::shared_ptr<ofRendererCollection> rendererCollection;
8
static bool bScreenShotStarted = false;
9

10

11
static void ofEndSaveScreen(){
12
	if( bScreenShotStarted ){
13

14
		if( cairoScreenshot ){
15
			cairoScreenshot->close();
16
			rendererCollection.reset();
17
			cairoScreenshot.reset();
18
		}
19
		if( storedRenderer ){
20
			ofSetCurrentRenderer(storedRenderer,true);
21
			storedRenderer.reset();
22
		}
23

24
		bScreenShotStarted = false;
25
	}
26

27
}
28

29
static void ofBeginSaveScreen(std::string filename, ofCairoRenderer::Type type, bool bMultipage, bool b3D, ofRectangle outputsize){
30
	if( bScreenShotStarted ) ofEndSaveScreen();
31
	
32
	storedRenderer = ofGetCurrentRenderer();
33
	
34
	cairoScreenshot = std::make_unique<ofCairoRenderer>();
35
	cairoScreenshot->setup(filename, type, bMultipage, b3D, outputsize);
36

37
	rendererCollection = std::make_shared<ofRendererCollection>();
38
	rendererCollection->renderers.push_back(storedRenderer);
39
	rendererCollection->renderers.push_back(cairoScreenshot);
40
	
41
	ofSetCurrentRenderer(rendererCollection, true);
42
	cairoScreenshot->background(cairoScreenshot->getStyle().bgColor);
43
	bScreenShotStarted = true;
44
}
45

46
//-----------------------------------------------------------------------------------
47
void ofBeginSaveScreenAsPDF(std::string filename, bool bMultipage, bool b3D, ofRectangle outputsize){
48
	ofBeginSaveScreen(filename, ofCairoRenderer::PDF, bMultipage, b3D, outputsize);
49
}
50

51
//-----------------------------------------------------------------------------------
52
void ofEndSaveScreenAsPDF(){
53
	ofEndSaveScreen();
54
}
55

56
//-----------------------------------------------------------------------------------
57
void ofBeginSaveScreenAsSVG(std::string filename, bool bMultipage, bool b3D, ofRectangle outputsize){
58
	ofBeginSaveScreen(filename, ofCairoRenderer::SVG, bMultipage, b3D, outputsize);
59
}
60

61
//-----------------------------------------------------------------------------------
62
void ofEndSaveScreenAsSVG(){
63
	ofEndSaveScreen();
64
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.