| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/qt-fire-staging:
Compile on Windows
Support gamma correction of text on GL
Remove QFontEngineFT::loadGlyphMetrics
Make autotest more resilient against network timeout
Do not filter adhoc clients
Lancelot: Add configurable client filtering to baseline server
Improve error reporting on failure to connect to baseline server
Fixed bug in X11 backend when creating translucent windows.
Only cleanup share widget if it has been created.
Add required font metrics functions to QRawFont
Fixed bug in QPdfEngine::addImage causing mono images to be made 32 bit
Make pixel size a qreal in QRawFont
Make sure removed QTextBlock is invalid
Make sure QFont's resolve mask is copied on compilers with C++0x support
Fix glyph position issue with fallback fonts
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the SRGB framebuffer extension in GL is available, we can support
gamma correction of text with a gamma of 2.1. On Mac this is
sufficient for gamma correcting subpixel antialiased text. Gray
antialiasing should not be gamma corrected on Mac.
On Windows, the user can potentially set the gamma value to anything
between 1.0 and 2.2 (or something like that). We support anything
that resembles 1.0 closely enough by pushing the text out without
any correction (like before). We also support anything that resembles
2.1 (the gamma hardcoded in GL's SRGB extension) by turning on the
extension before blending the text. In between the two, we'll use
gray antialiasing to avoid differing too much from the raster engine
(which is our reference in this.)
For gray antialiasing on Windows, we use a constant gamma of 2.3 which
has been determined by experimentation. Since this is close enough to
2.1 we do gamma correction with SRGB extension.
The distance limit of 0.2 is determined by some experimentation.
Reviewed-by: Samuel
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Without this change a not yet created share widget is created
once qt_destroy_gl_share_widget() is called. As creating the
widget also triggers a call to qt_cleanup_gl_share_widget() once
QApplication is destroyed a QApplication created afterwards
cannot use a share widget anymore.
This functionality is needed for Harmattan.
Merge-request: 2609
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
|\ \
| |/
|/| |
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public:
Fix trailing whitespaces
Fix for native child widget performance issue.
|
| | |
| | |
| | |
| | | |
Reviewed-by: TRUSTME
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Flushing native child widgets in VG and GL window
surfaces caused performance downgrade because unnecessary
swapBuffers calls. On Symbian we must not support flushing
native child widgets in VG and GL window surfaces because
it causes GPU memory overhead and performance issues. Symbian
graphics architecture allows us to render native child widgets
to TLW EGL surface correctly in most of the cases.
Task-number: QTMOBILITY-1570
Reviewed-by: Samuel Rødal
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When rendering fonts that are so large the Freetype engine will fall
back to outline rendering, we would sometimes lose glyphs that were
at the edge of the texture, because the width of the image returned
by QFontEngine::alphaMapForGlyph() includes a margin (which the other
font engines do not) and thus it would sometimes be wider than the
available area in the cache's texture. This would in turn cause the
GL call to copy the glyph into the cache to fail.
The correct fix would probably be to make the algorithm used to
calculate the width in QFontEngine::alphaMapForGlyph() the same as
the algorithm used by the glyph cache (which would mean to remove
the margin there), but to minimize the impact in a patch release,
we fix the symptom and move the correct fix to next minor release
instead.
Task-number: QT-4876
Reviewed-by: Jørgen
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/qt-fire-staging: (31 commits)
Make QtQuick2 compile on QPA
Use maximum ascent/descent/leading from fallback fonts in shaping
Another ugly hack to make bidi cursor work with Core Text
Make sure layoutData exist before checking for string direction
Removed warning from QPixmap::handle().
Take leading space width into account for painting and selection
doc: Simplify language in QGlyphs docs
doc: Minor cleanup in QGlyphs docs
Remove extra comma at the end of enum list
Fix compilation with Qt3Support
Don't transform glyph positions for Core Graphics paint engine
Skip linearGradientSymmetry test on QWS.
Turn on HarfBuzz support for Mac/Cocoa
Support visual cursor movement for BIDI text
Disable tst_QPixmap::onlyNullPixmapsOutsideGuiThread on Mac
Revert "Switch the default graphics system to raster on Mac."
Fix an race condition in the auto test.
Made linearGradientSymmetry test pass on qreal=float platforms.
Make sure #ifdef'd tests still have main() function
Long live QRawFont!
...
|
| |\ \
| | | |
| | | |
| | | |
| | | | |
Conflicts:
configure
|
| |\ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
src/gui/text/qglyphs.cpp
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The extended radial gradients conform to the radial gradient
specification in HTML 5 canvas.
Task-number: QTBUG-14075
Reviewed-by: Andreas Kling
|
|\ \ \ \ \
| |_|_|/ /
|/| | | /
| | |_|/
| |/| |
| | | | |
Conflicts:
src/opengl/qwindowsurface_gl.cpp
src/s60installs/eabi/QtGuiu.def
|
| |\ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public:
Input method hints are not correct if using proxy widget
Fix for GL graphcics system orientation which
Update Symbian platform notes documentation
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
OpenGL context needs to be recreated on Symbian
when orientation changes. Previously only the EGL
surface was recreated which wasn't enough.
Task-number: QTBUG-18850
Reviewed-by: Samuel Rødal
|
| | |\ \ \
| | | | | |
| | | | | |
| | | | | | |
merge-requests/2584
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
so you will need to use $QTBUILDDIR/bin/syncqt and recompile all
applications
|
|\ \ \ \ \ \
| | |_|_|/ /
| |/| | | | |
|
| |\ \ \ \ \
| | |_|_|_|/
| |/| | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
XCreateWindow should provide mask and colormap, or this may load XCreateWindow error in the server side.
Merge-request: 1183
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
| |\ \ \ \ \
| | |/ / / /
| |/| / / /
| | |/ / /
| | | | |
| | | | | |
Conflicts:
src/gui/text/qfontengine_mac.mm
tests/auto/qdiriterator/tst_qdiriterator.cpp
|
| | |\ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-doc-staging:
Fixed the declarative headers and includes within qdoc.
Removed invalid public slots section.
Minor feature fix led to refactoring for i18n's sake.
Fixed string-int concatenation issue.
qdoc: Allowed multiple values for certain metadata tags.
qdoc: modified \include to take a 2nd arg, snippet id.
Doc: Minor fix to title.
Doc: Fixed markup.
Doc: Added a missing command.
Doc: Removed duplicate documentation.
Removed some links and prettified others.
Doc: Squashed commit of Roland Wolf's threading tutorial.
|
| | | |\ \ \ |
|
| | | |\ \ \ \
| | | | | |_|/
| | | | |/| | |
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Reviewed-by: Samuel Rødal
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The Core profile was introduced in OpenGL 3.2 and if chosen removes
all deprecated functionality from the OpenGL API.
In the Core profile glGetString(GL_EXTENSIONS) is unsupported, so
instead we need to use glGetStringi(GL_EXTENSIONS, index) together with
glGetIntegerv(GL_NUM_EXTENSIONS). Also optimized the QGLExtensionMatcher
to not have to recompute the split positions all the time.
Preliminary support to prevent non-core-functions to be called in the GL
2 engine has also been added.
Reviewed-by: Kim
|
| |\ \ \ \ \ \
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
scm.dev.nokia.troll.no:qt/qt-integration into master-integration
* 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration: (237 commits)
Fix animation tests after merge
Remove duplicated test.
Add missing test file.
Changing width of RTL positioner doesn't relayout
Fix TextInput auto test failure on mac.
PinchArea and Flickable don't work well enough together
Do not set focus unnecessarily at window activation in Symbian
QS60Style: Regression in drawing dialog background
QS60Style: Support menu separator (pt.2)
Fix auto test failure.
Support for new softkey in Symbian^3
Once Image sourceSize is set there is no way to clear it.
Rotation transform with NaN angle can cause crash
QSoftkeyManager auto test update
Fixed not switching to MeeGo graphicssystem.
Canceling image download while reading causes crash
Fix width of TextInput micro focus rectangle.
Return correct boundaries reasons from QTextBoundaryFinder.
GridView jumps to beginning of list when resized
Fixed rounding of coordinates pre-transformation in CG paintengine.
...
|
| | |\ \ \ \ \ \
| | | |/ / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Conflicts:
doc/src/declarative/example-slideswitch.qdoc
doc/src/development/qmake-manual.qdoc
doc/src/snippets/code/doc_src_qmake-manual.pro
doc/src/snippets/code/doc_src_qtscript.qdoc
src/corelib/animation/qabstractanimation.cpp
src/s60installs/bwins/QtOpenGLu.def
src/s60installs/eabi/QtOpenGLu.def
src/s60installs/eabi/QtOpenVGu.def
tests/auto/qdir/qdir.pro
tests/auto/qsslsocket/tst_qsslsocket.cpp
tools/qdoc3/doc/qdoc-manual.qdocconf
|
| | | |\ \ \ \ \
| | | | |_|_|/ /
| | | |/| | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2:
Fixed not switching to MeeGo graphicssystem.
Fixed rounding of coordinates pre-transformation in CG paintengine.
Don't include qwindowsurface_gl_p.h on QT_OPENGL_ES_1.
|
| | | | | |/ /
| | | | |/| |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This causes linker errors since qwindowsurface.cpp isn't compiled.
Task-number: QTBUG-14217
Reviewed-by: Eskil Abrahamsen Blomfeldt
|
| | | |\ \ \ \
| | | | |/ / /
| | | |/| | /
| | | | | |/
| | | | |/|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public:
Show softkeys when opening a dialog that has a fullscreen parent.
Fixed autotests on Windows.
QS60Style: draw QComboBox menu correctly
Remove two compilation warnings for ARM
QTabWidget tabs are resized in wrong way when device rotates
Symbian: QComboBox popup Listbox size is not adjusted
Switched back to using symlinks for all mkspecs on Linux.
QS60Style: Support for Menu separators
Native image handle provider support in QGLPixmapData
Fix an issue with VGImage readback in openvg.
QSysInfo support for next generation Symbian devices.
Call FixNativeOrientation on Symbian for certain fullscreen qml views.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
QGLPixmapData's fromNativeType() accepts QNativeImageHandleProvider
pointers with type NativeImageHandleProvider from now on, similarly
to OpenVG pixmaps.
Task-number: QTBUG-18209
Reviewed-by: Jani Hautakangas
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
every window surface created.
Conflicts:
src/opengl/qgl_egl.cpp
src/opengl/qgl_p.h
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
As the DPI of displays continues to rise, especially on mobile devices,
the maximum glyph size of 64 pixels for the glyph cache has become a
limitation. This problem is made worse by the fact that when the maximum
glyph size is exceeded, the OpenGL paint engine falls back to using
rasterized geometry for glyph rendering. This does not produce
acceptable quality if the OpenGL rendering surface lacks support for
multisampling.
This patch offers a solution to the problem by making the
cached glyph size configurable at build time. This way the limit can be
set according to the capabilities of the target hardware.
Signed-off-by: Sami Kyöstilä <sami.kyostila@nokia.com>
Merge-request: 1131
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Reviewed-by: Jani Hautakangas
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Now that we've added hasPreservedContents() it's cleaner to convert the
various features to feature flags, which is also more extensible in case
more flags are needed in the future.
Reviewed-by: Bjørn Erik Nilsen
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Previously we used hasPartialUpdateSupport() to deduce whether the
window surface's contents are preserved when flush is called or not, but
that limits us from fully supporting platforms which might allow partial
updates even though the surface contents aren't preserved on flush.
If hasPreservedContents() returns false, that means a flush of a region
is never allowed without first painting to that region. If
hasPartialUpdateSupport() returns false, the whole window surface must
always be painted whenever an update is requested. Note that
hasPreservedContents() will typically imply hasPartialUpdateSupport(),
but not vice versa.
Reviewed-by: Bjørn Erik Nilsen
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/qt-fire-staging:
Fix crash and infinite recursion caused by previous commits
Fix remaining regressions in QWS
Take Xft.hintstyle by default to match the behavior of GTK+
Fixed remaining issues in subpixel positioning with FreeType
Fix QTransform debug output
qFloor the decoration line width before painting
Let QTextLine decide its own x position in QPainter
Avoid repeatedly trying to load unloadable plugins, causing slowness
Reset GL glyph cache when texture limit is reached
unlockFace was put in the wrong place in previous patch
Implement subpixel positioning with FreeType
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This is a port of 72f161739b270b01807f97cd853030440f0fd430 which was
reverted in integration to master, since it was incompatible with
the refactored glyph cache.
When the GL glyph cache reached its texture limit, we have to reset it
and start over. Added a new cleanup() function in
QGLContextGroupResourceBase which deletes the resource for a given
context and removes itself from that context group.
Task-number: QTBUG-13784
Reviewed-by: Samuel
|
| |\ \ \ \ \
| | | |/ / /
| | |/| | |
| | | | | |
| | | | | | |
Conflicts:
src/opengl/qwindowsurface_gl.cpp
|
| | |\ \ \ \
| | | | |/ /
| | | |/| /
| | | |_|/
| | |/| |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public:
Implement tiled image and pixmap drawing in VG paint engine.
Changed maximum heap size for qmlflickr on Symbian.
Change Symbian to use destroyed swap behaviour in GL
Remove useless profile reference.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Destroyed swap behaviour is a little bit faster than
preserved swap with heavily animated UIs like QML.
Task-number: QTBUG-18270
Reviewed-by: Samuel Rødal
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
scm.dev.nokia.troll.no:qt/qt-integration into master-integration
* 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration:
Fixed drawImage() not to attempt drawing null images on openvg.
QS60Style: Update placeholder texture to real one
Text bounding rect calculated incorrectly if non-top aligned.
Bump Qt version to 4.7.4
Return SV_S60_5_2 / SV_SF_3 for next gen Symbian platform.
Remove incorrect check in qpixmap autotest.
Change the pooled QGLPixmapData to be backed by QVolatileImage.
Started changes-4.7.4 file
Fix endianness detection with gcc 4.6 -flto -fwhole-program
remove redundand validateModes() call
Changed s60 style not to rely on QPixmapData::toNativeType().
Add missing bitmap locking to QVGPixmapData::fromNativeType.
Don't crash calling QTextDocument::blockBoundingRect on invalid block
Prepare fromSymbianCFbsBitmap autotest for 16 bpp format.
Fix writing to an attached property from script.
fixes/improvements for new QML right-to-left docs
Fix license headers in example code
Write Qt Quick 1.1 right-to-left documentation and examples
Doc fix - QtQuick 1.1 scheduling
|
| | |\ \ \ \
| | | |/ / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Conflicts:
examples/declarative/positioners/layoutdirection/layoutdirection.qml
src/corelib/global/qglobal.h
src/plugins/qpluginbase.pri
src/qbase.pri
src/s60installs/bwins/QtOpenGLu.def
src/s60installs/eabi/QtOpenGLu.def
tests/auto/selftests/expected_cmptest.txt
tests/auto/selftests/expected_crashes_3.txt
tests/auto/selftests/expected_longstring.txt
tests/auto/selftests/expected_maxwarnings.txt
tests/auto/selftests/expected_skip.txt
tools/assistant/tools/assistant/doc/assistant.qdocconf
tools/qdoc3/test/assistant.qdocconf
tools/qdoc3/test/designer.qdocconf
tools/qdoc3/test/linguist.qdocconf
tools/qdoc3/test/qdeclarative.qdocconf
tools/qdoc3/test/qmake.qdocconf
tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf
tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
|
| | | |\ \ \
| | | | |/ /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public:
Change the pooled QGLPixmapData to be backed by QVolatileImage.
Started changes-4.7.4 file
Changed s60 style not to rely on QPixmapData::toNativeType().
Add missing bitmap locking to QVGPixmapData::fromNativeType.
Prepare fromSymbianCFbsBitmap autotest for 16 bpp format.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This change currently affects QGLPixmapData on Symbian only. Similarly
to the OpenVG engine, using QVolatileImage allows more efficient
handling of to- and fromSymbianCFbsBitmap, reduces local heap usage,
and improves s60 style performance.
Task-number: QTBUG-15252
Reviewed-by: Jani Hautakangas
|
| |\ \ \ \ \
| | |_|_|_|/
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
master-integration
* 'master' of scm.dev.nokia.troll.no:qt/qt-releng-staging:
Updated QtGUI DEF files for WINSCW
Handle removal of setter for partialUpdateSupport
Updated QtGUI DEF files for WINSCW
Handle removal of setter for partialUpdateSupport
Updated DEF files for Symbian
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The setter was removed as part of merge request 1136. This commit
fixes the Symbian build where Q_NO_EGL is undefined.
Reviewed-by: Samuel Rødal
|
| |\ \ \ \
| | |/ / /
| |/| | | |
|