1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 02:37:35 +00:00
serenity/Userland/Libraries/LibGfx
Karol Kosek 3d7838c5fb LibGfx: Implement SmoothPixels scaling mode
If you wanted to upscale an image, you had two options:
- use Nearest Neighbor: it's probably a good choice. The image stays
  sharp.. unless you aren't using integer scales.
- use Bilinear blending, but this on the other hand, doesn't handle
  upscaling well. It just blurs everything.

But what if we could take the best of both of them and make the image
sharp on integers and just blur it a little when needed?

Well, there's Smooth Pixels!

This mode is similar to the Bilinear Blend, with the main difference
is that the blend ratio is multiplied by the current scale, so the blur
on corners can be only 1px wide.

From my testing this mode doesn't handles downscaling as good as the
Bilinear blending though.
2022-06-16 14:26:55 +01:00
..
Filters Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Font LibGfx: Add a loader the Web Open Font Format (WOFF) 2022-04-09 23:48:18 +02:00
AffineTransform.cpp LibGfx: Use some AK/Math helpers in AffineTransform 2022-05-07 20:25:39 +02:00
AffineTransform.h LibGfx: Add AffineTransform::is_identity_or_translation() 2022-04-10 21:35:55 +02:00
AntiAliasingPainter.cpp LibGfx: Support AlphaSubtract blend mode for AA rounded rectangle 2022-06-14 00:25:12 +01:00
AntiAliasingPainter.h LibGfx: Add .as_rect() to AntiAliasingPainter::CornerRadius 2022-06-14 00:25:12 +01:00
Bitmap.cpp LibGfx: Use less allocations in highdpi_icon_[path,string] creation 2022-06-14 23:00:52 +02:00
Bitmap.h LibCore+LibGfx: Pass file-path as StringView 2022-06-14 23:00:52 +02:00
BitmapMixer.cpp LibGfx: Add BitmapMixer 2022-01-04 21:41:14 +02:00
BitmapMixer.h LibGfx: Add BitmapMixer 2022-01-04 21:41:14 +02:00
BMPLoader.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
BMPLoader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
BMPWriter.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
BMPWriter.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CharacterBitmap.h Libraries: Make CharacterBitmap instances at compile-time 2022-03-04 17:41:08 +01:00
ClassicStylePainter.cpp Everywhere: Fix a bunch of typos 2022-05-29 15:22:00 +02:00
ClassicStylePainter.h LibGUI: TabWidget add vertical tabs 2022-05-21 22:25:16 +02:00
ClassicWindowTheme.cpp LibGfx: Move other font-related files to LibGfx/Font/ 2022-04-09 23:48:18 +02:00
ClassicWindowTheme.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CMakeLists.txt LibGfx: Add a QOI image format encoder 2022-04-13 15:21:27 +01:00
Color.cpp Userland: Remove a few gratuitous IPC namespace qualifiers 2022-04-03 15:18:20 +01:00
Color.h LibGfx: Add Color::contrast_ratio() 2022-05-26 00:07:24 +01:00
CursorParams.cpp Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
CursorParams.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
DDSLoader.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
DDSLoader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
DisjointRectSet.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
DisjointRectSet.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
FillPathImplementation.h LibWeb: Use Gfx::AntiAliasingPainter to draw SVG paths 2021-09-18 02:12:38 +04:30
Forward.h LibGfx: Add Gfx::Quad<T> to represent arbitrary quadrilaterals 2022-04-07 17:06:02 +02:00
Gamma.h LibGfx: Use AK's rsqrt and cast to floats earlier 2022-04-02 18:37:38 +02:00
GIFLoader.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
GIFLoader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ICOLoader.cpp LibGfx: Avoid signed comparison in find_largest_image 2022-04-20 16:01:09 +03:00
ICOLoader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ImageDecoder.cpp Libraries: Use default constructors/destructors in LibGfx 2022-03-17 17:23:49 +00:00
ImageDecoder.h Libraries: Use default constructors/destructors in LibGfx 2022-03-17 17:23:49 +00:00
JPGLoader.cpp LibGfx: Fix bounds overflow in JPGLoader 2022-04-17 09:39:48 +04:30
JPGLoader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Line.h Libraries: Use default constructors/destructors in LibGfx 2022-03-17 17:23:49 +00:00
Matrix.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Matrix3x3.h LibGfx: Add Matrix3x3 2021-12-30 14:24:29 +01:00
Matrix4x4.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Orientation.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Painter.cpp LibGfx: Implement SmoothPixels scaling mode 2022-06-16 14:26:55 +01:00
Painter.h LibGfx: Implement SmoothPixels scaling mode 2022-06-16 14:26:55 +01:00
Palette.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Palette.h LibGfx+WindowServer: Add theme flag TitleButtonsIconOnly 2022-04-25 23:45:24 +02:00
Path.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Path.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
PBMLoader.cpp LibGfx: Use common class template for PBM/PGM/PPM image loaders 2022-03-13 22:35:20 +01:00
PBMLoader.h LibGfx: Use common class template for PBM/PGM/PPM image loaders 2022-03-13 22:35:20 +01:00
PGMLoader.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
PGMLoader.h LibGfx: Use common class template for PBM/PGM/PPM image loaders 2022-03-13 22:35:20 +01:00
PNGLoader.cpp LibGfx: Rename conflicting Quad<T> in PNG loader to Quartet<T> 2022-04-07 20:43:35 +02:00
PNGLoader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
PNGWriter.cpp Everywhere: Convert ByteBuffer factory methods from Optional -> ErrorOr 2022-01-24 22:36:09 +01:00
PNGWriter.h Libraries: Use default constructors/destructors in LibGfx 2022-03-17 17:23:49 +00:00
Point.cpp LibIPC+IPCCompiler+AK: Make IPC value decoders return ErrorOr<void> 2021-11-28 23:14:19 +01:00
Point.h LibIPC+IPCCompiler+AK: Make IPC value decoders return ErrorOr<void> 2021-11-28 23:14:19 +01:00
PortableImageLoaderCommon.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
PortableImageMapLoader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
PPMLoader.cpp LibGfx: Use common class template for PBM/PGM/PPM image loaders 2022-03-13 22:35:20 +01:00
PPMLoader.h LibGfx: Use common class template for PBM/PGM/PPM image loaders 2022-03-13 22:35:20 +01:00
QOILoader.cpp LibGfx: Keep alpha value of previous pixel for QOI_OP_RGB chunk 2021-12-22 01:12:51 +01:00
QOILoader.h LibGfx: Add support for "The Quite OK Image Format" (QOI) 2021-12-21 13:27:27 +01:00
QOIWriter.cpp LibGfx: Add a QOI image format encoder 2022-04-13 15:21:27 +01:00
QOIWriter.h LibGfx: Add a QOI image format encoder 2022-04-13 15:21:27 +01:00
Quad.h LibGfx: Add Gfx::Quad<T> to represent arbitrary quadrilaterals 2022-04-07 17:06:02 +02:00
Rect.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Rect.h LibGfx: Specialize Rect::to_rounded a bit more 2022-05-07 20:25:39 +02:00
ShareableBitmap.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ShareableBitmap.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Size.cpp LibIPC+IPCCompiler+AK: Make IPC value decoders return ErrorOr<void> 2021-11-28 23:14:19 +01:00
Size.h LibGfx: Make Size constexpr-capable 2022-03-04 17:41:08 +01:00
StandardCursor.h Cursors: Add new Magnifying glass cursor 2021-09-04 03:35:23 +02:00
Streamer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
StylePainter.cpp LibGUI: TabWidget add vertical tabs 2022-05-21 22:25:16 +02:00
StylePainter.h LibGUI: TabWidget add vertical tabs 2022-05-21 22:25:16 +02:00
SystemTheme.cpp LibGfx: Add list_installed_system_themes() to SystemTheme 2022-04-02 21:50:41 +02:00
SystemTheme.h LibGfx+WindowServer: Add theme flag TitleButtonsIconOnly 2022-04-25 23:45:24 +02:00
TextAlignment.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
TextAttributes.h LibGfx: Expand TextAttributes with more information about underlining 2022-01-23 15:48:27 +03:30
TextDirection.cpp Everywhere: Fix a bunch of typos 2021-05-17 17:48:55 +01:00
TextDirection.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
TextElision.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
TextLayout.cpp LibGfx: Use Font::pixel_size() instead of glyph_height() when painting 2022-03-27 01:14:56 +01:00
TextLayout.h LibGfx: Move other font-related files to LibGfx/Font/ 2022-04-09 23:48:18 +02:00
TextWrapping.h Userland: Move text wrapping/elision into the new TextLayout :^) 2021-07-26 21:14:39 +04:30
Triangle.cpp LibGfx: Templatize Gfx::Triangle 2022-04-07 17:06:02 +02:00
Triangle.h LibGfx: Templatize Gfx::Triangle 2022-04-07 17:06:02 +02:00
Vector2.h LibGfx: Add IntVector2/3/4 types 2022-05-05 20:50:46 +02:00
Vector3.h LibGfx: Add IntVector2/3/4 types 2022-05-05 20:50:46 +02:00
Vector4.h LibGfx: Add IntVector2/3/4 types 2022-05-05 20:50:46 +02:00
VectorN.h LibGfx: Use AK::round_to for VectorN::to_rounded<U> 2022-05-09 21:49:48 +02:00
WindowTheme.cpp Libraries: Use default constructors/destructors in LibGfx 2022-03-17 17:23:49 +00:00
WindowTheme.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00