QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
server
services
wms
qgswmsgetprint.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgswmsgetprint.h
3
-------------------------
4
begin : December 20 , 2016
5
copyright : (C) 2007 by Marco Hugentobler (original code)
6
(C) 2014 by Alessandro Pasotti (original code)
7
(C) 2016 by David Marteau
8
email : marco dot hugentobler at karto dot baug dot ethz dot ch
9
a dot pasotti at itopen dot it
10
david dot marteau at 3liz dot com
11
***************************************************************************/
12
13
/***************************************************************************
14
* *
15
* This program is free software; you can redistribute it and/or modify *
16
* it under the terms of the GNU General Public License as published by *
17
* the Free Software Foundation; either version 2 of the License, or *
18
* (at your option) any later version. *
19
* *
20
***************************************************************************/
21
#include "
qgswmsgetprint.h
"
22
23
#include "
qgswmsrenderer.h
"
24
#include "
qgswmsrequest.h
"
25
#include "
qgswmsserviceexception.h
"
26
#include "
qgswmsutils.h
"
27
28
#include <QString>
29
30
using namespace
Qt::StringLiterals;
31
32
namespace
QgsWms
33
{
34
void
writeGetPrint
(
QgsServerInterface
*serverIface,
const
QgsProject
*project,
const
QgsWmsRequest
&request,
QgsServerResponse
&response )
35
{
36
const
QgsWmsParameters
parameters = request.
wmsParameters
();
37
38
// GetPrint supports svg/png/pdf
39
const
QgsWmsParameters::Format
format = parameters.
format
();
40
QString contentType;
41
switch
( format )
42
{
43
case
QgsWmsParameters::PNG
:
44
contentType = u
"image/png"
_s;
45
break
;
46
case
QgsWmsParameters::JPG
:
47
contentType = u
"image/jpeg"
_s;
48
break
;
49
case
QgsWmsParameters::SVG
:
50
contentType = u
"image/svg+xml"
_s;
51
break
;
52
case
QgsWmsParameters::PDF
:
53
contentType = u
"application/pdf"
_s;
54
break
;
55
default
:
56
throw
QgsBadRequestException
(
QgsServiceException::OGC_InvalidFormat
, parameters[
QgsWmsParameter::FORMAT
] );
57
break
;
58
}
59
60
// prepare render context
61
QgsWmsRenderContext
context( project, serverIface );
62
context.
setFlag
(
QgsWmsRenderContext::UpdateExtent
);
63
context.
setFlag
(
QgsWmsRenderContext::UseOpacity
);
64
context.
setFlag
(
QgsWmsRenderContext::UseFilter
);
65
context.
setFlag
(
QgsWmsRenderContext::UseSelection
);
66
context.
setFlag
(
QgsWmsRenderContext::SetAccessControl
);
67
context.
setFlag
(
QgsWmsRenderContext::AddHighlightLayers
);
68
context.
setFlag
(
QgsWmsRenderContext::AddExternalLayers
);
69
context.
setFlag
(
QgsWmsRenderContext::AddAllLayers
);
70
context.
setParameters
( parameters );
71
context.
setSocketFeedback
( response.
feedback
() );
72
73
// rendering
74
QgsRenderer
renderer( context );
75
response.
setHeader
( u
"Content-Type"
_s, contentType );
76
response.
write
( renderer.
getPrint
() );
77
}
78
}
// namespace QgsWms
QgsProject
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition
qgsproject.h:114
QgsServerInterface
Defines interfaces exposed by QGIS Server and made available to plugins.
Definition
qgsserverinterface.h:61
QgsServerResponse
Defines the response interface passed to QgsService.
Definition
qgsserverresponse.h:42
QgsServerResponse::write
virtual void write(const QString &data)
Write string This is a convenient method that will write directly to the underlying I/O device.
Definition
qgsserverresponse.cpp:29
QgsServerResponse::setHeader
virtual void setHeader(const QString &key, const QString &value)=0
Set a single header value replacing any existing value(s) for the same key.
QgsServerResponse::feedback
virtual QgsFeedback * feedback() const
Returns the socket feedback if any.
Definition
qgsserverresponse.cpp:100
QgsWms::QgsBadRequestException
Exception thrown in case of malformed request.
Definition
qgswmsserviceexception.h:210
QgsWms::QgsRenderer
Map renderer for WMS requests.
Definition
qgswmsrenderer.h:71
QgsWms::QgsRenderer::getPrint
QByteArray getPrint()
Returns printed page as binary.
Definition
qgswmsrenderer.cpp:403
QgsWms::QgsServiceException::OGC_InvalidFormat
@ OGC_InvalidFormat
Definition
qgswmsserviceexception.h:49
QgsWms::QgsWmsParameter::FORMAT
@ FORMAT
Definition
qgswmsparameters.h:153
QgsWms::QgsWmsParameters
Provides an interface to retrieve and manipulate WMS parameters received from the client.
Definition
qgswmsparameters.h:346
QgsWms::QgsWmsParameters::format
Format format() const
Returns format.
Definition
qgswmsparameters.cpp:783
QgsWms::QgsWmsParameters::Format
Format
Output format for the response.
Definition
qgswmsparameters.h:352
QgsWms::QgsWmsParameters::SVG
@ SVG
Definition
qgswmsparameters.h:356
QgsWms::QgsWmsParameters::PDF
@ PDF
Definition
qgswmsparameters.h:357
QgsWms::QgsWmsParameters::JPG
@ JPG
Definition
qgswmsparameters.h:354
QgsWms::QgsWmsParameters::PNG
@ PNG
Definition
qgswmsparameters.h:355
QgsWms::QgsWmsRenderContext
Rendering context for the WMS renderer.
Definition
qgswmsrendercontext.h:35
QgsWms::QgsWmsRenderContext::setParameters
void setParameters(const QgsWmsParameters ¶meters)
Sets WMS parameters.
Definition
qgswmsrendercontext.cpp:48
QgsWms::QgsWmsRenderContext::setFlag
void setFlag(Flag flag, bool on=true)
Sets or unsets a rendering flag according to the on value.
Definition
qgswmsrendercontext.cpp:71
QgsWms::QgsWmsRenderContext::setSocketFeedback
void setSocketFeedback(QgsFeedback *feedback)
Sets the response feedback.
Definition
qgswmsrendercontext.cpp:1056
QgsWms::QgsWmsRenderContext::UseFilter
@ UseFilter
Definition
qgswmsrendercontext.h:42
QgsWms::QgsWmsRenderContext::UseOpacity
@ UseOpacity
Definition
qgswmsrendercontext.h:41
QgsWms::QgsWmsRenderContext::AddHighlightLayers
@ AddHighlightLayers
Definition
qgswmsrendercontext.h:44
QgsWms::QgsWmsRenderContext::UseSelection
@ UseSelection
Definition
qgswmsrendercontext.h:43
QgsWms::QgsWmsRenderContext::AddExternalLayers
@ AddExternalLayers
Definition
qgswmsrendercontext.h:49
QgsWms::QgsWmsRenderContext::AddAllLayers
@ AddAllLayers
For GetPrint: add layers from LAYER(S) parameter.
Definition
qgswmsrendercontext.h:52
QgsWms::QgsWmsRenderContext::SetAccessControl
@ SetAccessControl
Definition
qgswmsrendercontext.h:46
QgsWms::QgsWmsRenderContext::UpdateExtent
@ UpdateExtent
Definition
qgswmsrendercontext.h:45
QgsWms::QgsWmsRequest
Defines request interfaces passed to WMS service.
Definition
qgswmsrequest.h:35
QgsWms::QgsWmsRequest::wmsParameters
const QgsWmsParameters & wmsParameters() const
Returns the parameters interpreted for the WMS service.
Definition
qgswmsrequest.cpp:32
QgsWms
Median cut implementation.
Definition
qgsdxfwriter.cpp:27
QgsWms::writeGetPrint
void writeGetPrint(QgsServerInterface *serverIface, const QgsProject *project, const QgsWmsRequest &request, QgsServerResponse &response)
Output GetPrint response.
Definition
qgswmsgetprint.cpp:34
qgswmsgetprint.h
qgswmsrenderer.h
qgswmsrequest.h
qgswmsserviceexception.h
qgswmsutils.h
Generated on
for QGIS API Documentation by
1.17.0