/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice :
*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership . The ASF licenses this file to you under the Apache
* License , Version 2 . 0 ( the " License " ) ; you may not use this file
* except in compliance with the License . You may obtain a copy of
* the License at http : //www.apache.org/licenses/LICENSE-2.0 .
*/
module com { module sun { module star { module rendering {
interface XBitmap;
interface XVolatileBitmap;
interface XBufferController;
/* TODO: There's obviously a concept called window missing here, where
methods such as bufferController , fullscreen mode etc . belong
to . But see below
*/
/** This interface provides access to a graphic device, such as a
printer , or a screen device . Every canvas ( @ see XCanvas ) has
exactly one associated graphic device , into which its output is
rendered .
For a typical windowing system , the graphic device is equivalent
to a distinct OS window , with its own clipped output area ,
fullscreen and double - buffering attributes . That is , even if one
can have multiple canvases per system window , they all share the
same graphic device and thus e . g . fullscreen state . If the OS
restrictions are in such a way that fullscreen or double - buffering
is screen - exclusive , i . e . that per screen , only one object can
have this state , it might even be that all windows on the screen
share a common graphic device .
*/
interface XGraphicDevice : ::com::sun::star::uno::XInterface
{
/** Query the controller for multi buffering functionality on this
graphic device .
If there is no such functionality available , the NULL
reference is returned .
*/
XBufferController getBufferController();
/** Query the color space interface for this graphic device.
This is to be used when interpreting or setting device color
values .
*/
XColorSpace getDeviceColorSpace();
/** Query the physical resolution of the device in pixel per
millimeter .
A special floating point value of + infinity here indicates
" unknown " , i . e . at the time of rendering undetermined or
possibly infinite resolution along the corresponding
direction .
*/
::com::sun::star::geometry::RealSize2D getPhysicalResolution();
/** Query the physical dimensions of the device in millimeter.
A special floating point value of + infinity here indicates
" unknown " , i . e . at the time of rendering undetermined or
possibly infinite resolution along the corresponding
direction .
@ see XBitmap : : getSize ( )
*/
::com::sun::star::geometry::RealSize2D getPhysicalSize();
/** Create a line poly-polygon which can internally use
device - optimized representations already .
@ param points
The points of the poly - polygon , in a separate array for every polygon .
*/
XLinePolyPolygon2D createCompatibleLinePolyPolygon( [in] sequence< sequence< ::com::sun::star::geometry::RealPoint2D > > points );
/** Create a Bezier poly-polygon which can internally use
device - optimized representations already .
@ param points
The points of the poly - polygon , in a separate array for every polygon .
*/
XBezierPolyPolygon2D createCompatibleBezierPolyPolygon( [in] sequence< sequence< ::com::sun::star::geometry::RealBezierSegment2D > > points );
/** Create a bitmap whose memory layout and sample model is
compatible to the graphic device .
@ param size
Size of the requested bitmap in pixel . Both components of the
size must be greater than 0
*/
XBitmap createCompatibleBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
raises (com::sun::star::lang::IllegalArgumentException);
/** Create a volatile bitmap that is usable with this graphic device.
A volatile bitmap ' s difference in comparison to a plain bitmap
( e . g . generated via createCompatibleBitmap ( ) ) is the fact that
its content might vanish at any point in time ( making any
operation with them produce a
VolatileContentDestroyedException ) . The benefit ,
on the other hand , is that they might be easy to
hardware - accelerate on certain platforms , without the need to
keep a safety copy of the content internally .
@ param size
Size of the requested bitmap in pixel . Both components of the
size must be greater than 0
*/
XVolatileBitmap createVolatileBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
raises (com::sun::star::lang::IllegalArgumentException);
/** Create a bitmap with alpha channel whose memory layout and
sample model is compatible to the graphic device .
@ param size
Size of the requested bitmap in pixel . Both components of the
size must be greater than 0
*/
XBitmap createCompatibleAlphaBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
raises (com::sun::star::lang::IllegalArgumentException);
/** Create a volatile bitmap with alpha channel that is usable
with this graphic device .
A volatile bitmap ' s difference in comparison to a plain bitmap
( e . g . generated via createCompatibleBitmap ( ) ) is the fact that
its content might vanish at any point in time ( making any
operation with them produce a
VolatileContentDestroyedException ) . The benefit ,
on the other hand , is that they might be easy to
hardware - accelerate on certain platforms , without the need to
keep a safety copy of the content internally .
@ param size
Size of the requested bitmap in pixel . Both components of the
size must be greater than 0
*/
XVolatileBitmap createVolatileAlphaBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
raises (com::sun::star::lang::IllegalArgumentException);
/** Get a reference to this device's parametric polygon factory.
@ return a reference to this device ' s parametric polygon
factory . Although it is possible to use parametric polygons on
all canvases , regardless of the associated graphic device ,
this is not advisable : each canvas implementation is free to
internally generate optimized parametric polygons , which can
be used more directly for e . g . texturing operations .
Available services ( all canvas implementations should provide
this minimal set , though are free to add more ; just check the
getAvailableServiceNames ( ) on the returned interface ) :
- Gradients - all gradients need to support two construction
parameters , " Colors " being a ` sequence & lt ; Color & gt ; `
and " Stops " being a ` sequence & lt ; double & gt ; ` . Both must
have the same length , and at least two elements . See
http : //www.w3.org/TR/SVG11/pservers.html#GradientStops for
the semantics of gradient stops and colors .
Required gradient services :
- " LinearGradient " - the gradient varies linearly between
the given colors . without coordinate system
transformation , the color interpolation happens in
increasing x direction , and is constant in y
direction . Equivalent to svg linear gradient
http : //www.w3.org/TR/SVG11/pservers.html#LinearGradients
- " EllipticalGradient " - this gradient has zeroth color
index in the middle , and varies linearly between center
and final color . The services takes an additional
parameter named " AspectRatio " of double
( width divided by height ) , if this aspect ratio is 1 , the
gradient is circular . If it ' s not 1 , the gradient is
elliptical , with the special twist that the aspect ratio
is maintained also for the center color : the gradient will
not collapse into a single point , but become a line of
center color . If " AspectRatio " is missing , or equal to 1 ,
this gradient yields similar results as the svg radial
gradient
http : //www.w3.org/TR/SVG11/pservers.html#RadialGradients
- " RectangularGradient " - this gradient has zeroth color
index in the middle , and varies linearly between center
and final color via rectangular boxes
around the center point . The services takes an additional
parameter named " AspectRatio " of double
( width divided by height ) , if this aspect ratio is 1 , the
gradient is quadratic . If it ' s not 1 , the gradient is
rectangular , with the special twist that the aspect ratio
is maintained also for the center color : the gradient will
not collapse into a single point , but become a line of
center color .
- Hatch patterns - Required hatch services :
- " VerticalLineHatch " - this hatching consists of vertical lines
- " OrthogonalLinesHatch " - this hatching consists of
crossing vertical and horizontal lines
- " ThreeCrossingLinesHatch " - this hatching consists of
vertical and horizontal lines plus diagonal lines from
left , top to bottom , right .
- " FourCrossingLinesHatch " - this hatching consists of
vertical and horizontal lines plus diagonal lines in both
directions .
*/
com::sun::star::lang::XMultiServiceFactory getParametricPolyPolygonFactory();
/** Tells whether this graphic device has a full screen mode,
i . e . whether a window can cover the whole screen exclusively .
*/
boolean hasFullScreenMode();
/** Enter or leave the fullscreen mode, if possible. The return
value denotes the success of the operation .
@ attention depending on the underlying operating system ,
fullscreen mode can be left without an enterFullScreenMode (
false ) call .
*/
boolean enterFullScreenMode( [in] boolean bEnter );
};
}; }; }; };
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Messung V0.5 in Prozent C=96 H=93 G=94
¤ Dauer der Verarbeitung: 0.11 Sekunden
¤
*© Formatika GbR, Deutschland