Files
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

107 lines
3.1 KiB
C++

//========================================================================
//
// ShadingImage.h
//
// Convert shading patterns to bitmaps.
//
// Copyright 2020 Glyph & Cog, LLC
//
//========================================================================
#ifndef SHADINGIMAGE_H
#define SHADINGIMAGE_H
#include <aconf.h>
#ifdef USE_GCC_PRAGMAS
#pragma interface
#endif
#include "SplashTypes.h"
class GfxState;
class GfxShading;
class SplashBitmap;
class Splash;
class ShadingImage {
public:
// Generate a [mode] bitmap for [shading], using the clipping and
// CTM info from [state]. Returns the bitmap and sets [xOut],[yOut]
// to the upper-left corner of the region in device space. Returns
// NULL if the clip region is empty.
static SplashBitmap *generateBitmap(GfxState *state, GfxShading *shading,
SplashColorMode mode,
GBool reverseVideo,
Splash *parentSplash,
SplashBitmap *parentBitmap,
int *xOut, int *yOut);
private:
static SplashBitmap *generateFunctionBitmap(GfxState *state,
GfxFunctionShading *shading,
SplashColorMode mode,
GBool reverseVideo,
Splash *parentSplash,
SplashBitmap *parentBitmap,
int *xOut, int *yOut);
static SplashBitmap *generateAxialBitmap(GfxState *state,
GfxAxialShading *shading,
SplashColorMode mode,
GBool reverseVideo,
Splash *parentSplash,
SplashBitmap *parentBitmap,
int *xOut, int *yOut);
static SplashBitmap *generateRadialBitmap(GfxState *state,
GfxRadialShading *shading,
SplashColorMode mode,
GBool reverseVideo,
Splash *parentSplash,
SplashBitmap *parentBitmap,
int *xOut, int *yOut);
static SplashBitmap *generateGouraudTriangleBitmap(
GfxState *state,
GfxGouraudTriangleShading *shading,
SplashColorMode mode,
GBool reverseVideo,
Splash *parentSplash,
SplashBitmap *parentBitmap,
int *xOut, int *yOut);
static void gouraudFillTriangle(GfxState *state, SplashBitmap *bitmap,
SplashColorMode mode,
GBool reverseVideo,
int xMin, int yMin, int xMax, int yMax,
double x0, double y0, double *color0,
double x1, double y1, double *color1,
double x2, double y2, double *color2,
GfxGouraudTriangleShading *shading);
static SplashBitmap *generatePatchMeshBitmap(GfxState *state,
GfxPatchMeshShading *shading,
SplashColorMode mode,
GBool reverseVideo,
Splash *parentSplash,
SplashBitmap *parentBitmap,
int *xOut, int *yOut);
static void fillPatch(GfxState *state, Splash *splash,
SplashColorMode mode, GBool reverseVideo,
int xMin, int yMin,
GfxPatch *patch,
GfxPatchMeshShading *shading,
int depth);
static void computeShadingColor(GfxState *state,
SplashColorMode mode,
GBool reverseVideo,
GfxColor *color,
SplashColorPtr sColor);
static void transformBBox(GfxState *state,
double uxMin, double uyMin,
double uxMax, double uyMax,
double *dxMin, double *dyMin,
double *dxMax, double *dyMax);
};
#endif