mirror of
https://github.com/RGBCube/serenity
synced 2025-05-21 15:45:07 +00:00

After adding support for XObject Form rendering, the next was to display XObject images. This commit adds this initial support, Images come in many shapes and forms: encodings: color spaces, bits per component, width, height, etc. This initial support is constrained to the color spaces we currently support, to images that use 8 bits per component, to images that do *not* use the JPXDecode filter, and that are not Masks. There are surely other constraints that aren't considered in this initial support, so expect breakage here and there. In addition to supporting images, we also support applying an alpha mask (SMask) on them. Additionally, a new rendering preference allows to skip image loading and rendering altogether, instead showing an empty rectangle as a placeholder (useful for when actual images are not supported). Since RenderingPreferences is becoming a bit more complex, we add a hash option that will allow us to keep track of different preferences (e.g., in a HashMap).
157 lines
5 KiB
C++
157 lines
5 KiB
C++
/*
|
|
* Copyright (c) 2021-2022, Matthew Olsson <mattco@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/FlyString.h>
|
|
|
|
#define ENUMERATE_COMMON_NAMES(A) \
|
|
A(AIS) \
|
|
A(Alternate) \
|
|
A(ASCII85Decode) \
|
|
A(ASCIIHexDecode) \
|
|
A(BG) \
|
|
A(BG2) \
|
|
A(BM) \
|
|
A(BaseEncoding) \
|
|
A(BaseFont) \
|
|
A(BitsPerComponent) \
|
|
A(BlackPoint) \
|
|
A(C) \
|
|
A(CA) \
|
|
A(CCITTFaxDecode) \
|
|
A(CalRGB) \
|
|
A(CIDSystemInfo) \
|
|
A(CIDToGIDMap) \
|
|
A(Colors) \
|
|
A(ColorSpace) \
|
|
A(Columns) \
|
|
A(Contents) \
|
|
A(Count) \
|
|
A(CropBox) \
|
|
A(Crypt) \
|
|
A(D) \
|
|
A(DW) \
|
|
A(DCTDecode) \
|
|
A(DecodeParms) \
|
|
A(Decode) \
|
|
A(DescendantFonts) \
|
|
A(Dest) \
|
|
A(Dests) \
|
|
A(DeviceCMYK) \
|
|
A(DeviceGray) \
|
|
A(DeviceRGB) \
|
|
A(Differences) \
|
|
A(E) \
|
|
A(Encoding) \
|
|
A(Encrypt) \
|
|
A(EncryptMetadata) \
|
|
A(ExtGState) \
|
|
A(F) \
|
|
A(FL) \
|
|
A(Filter) \
|
|
A(First) \
|
|
A(FirstChar) \
|
|
A(Fit) \
|
|
A(FitB) \
|
|
A(FitBH) \
|
|
A(FitBV) \
|
|
A(FitH) \
|
|
A(FitR) \
|
|
A(FitV) \
|
|
A(FlateDecode) \
|
|
A(Font) \
|
|
A(FontDescriptor) \
|
|
A(FontFamily) \
|
|
A(FontFile) \
|
|
A(FontFile2) \
|
|
A(FontFile3) \
|
|
A(Gamma) \
|
|
A(H) \
|
|
A(Height) \
|
|
A(HT) \
|
|
A(HTO) \
|
|
A(ICCBased) \
|
|
A(ID) \
|
|
A(Image) \
|
|
A(ImageMask) \
|
|
A(Index) \
|
|
A(JBIG2Decode) \
|
|
A(JPXDecode) \
|
|
A(Kids) \
|
|
A(L) \
|
|
A(LC) \
|
|
A(LJ) \
|
|
A(LW) \
|
|
A(LZWDecode) \
|
|
A(Last) \
|
|
A(LastChar) \
|
|
A(Length) \
|
|
A(Length1) \
|
|
A(Length2) \
|
|
A(Length3) \
|
|
A(Linearized) \
|
|
A(ML) \
|
|
A(Matrix) \
|
|
A(MediaBox) \
|
|
A(MissingWidth) \
|
|
A(N) \
|
|
A(Next) \
|
|
A(O) \
|
|
A(OP) \
|
|
A(OPM) \
|
|
A(Ordering) \
|
|
A(Outlines) \
|
|
A(P) \
|
|
A(Pages) \
|
|
A(Parent) \
|
|
A(Pattern) \
|
|
A(Predictor) \
|
|
A(Prev) \
|
|
A(R) \
|
|
A(RI) \
|
|
A(Registry) \
|
|
A(Resources) \
|
|
A(Root) \
|
|
A(Rotate) \
|
|
A(RunLengthDecode) \
|
|
A(SA) \
|
|
A(SM) \
|
|
A(SMask) \
|
|
A(Subtype) \
|
|
A(Supplement) \
|
|
A(T) \
|
|
A(TK) \
|
|
A(TR) \
|
|
A(TR2) \
|
|
A(Title) \
|
|
A(ToUnicode) \
|
|
A(Type) \
|
|
A(U) \
|
|
A(UCR) \
|
|
A(UseBlackPTComp) \
|
|
A(UserUnit) \
|
|
A(W) \
|
|
A(WhitePoint) \
|
|
A(Width) \
|
|
A(Widths) \
|
|
A(XObject) \
|
|
A(XYZ) \
|
|
A(ca) \
|
|
A(op)
|
|
|
|
namespace PDF {
|
|
|
|
class CommonNames {
|
|
public:
|
|
#define ENUMERATE(name) static FlyString name;
|
|
ENUMERATE_COMMON_NAMES(ENUMERATE)
|
|
#undef ENUMERATE
|
|
|
|
static FlyString IdentityH;
|
|
};
|
|
|
|
}
|