| Index: pdf/draw_utils.h
|
| ===================================================================
|
| --- pdf/draw_utils.h (revision 0)
|
| +++ pdf/draw_utils.h (revision 0)
|
| @@ -0,0 +1,94 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef PDF_DRAW_UTILS_H_
|
| +#define PDF_DRAW_UTILS_H_
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "ppapi/cpp/image_data.h"
|
| +#include "ppapi/cpp/rect.h"
|
| +
|
| +namespace chrome_pdf {
|
| +
|
| +const uint8 kOpaqueAlpha = 0xFF;
|
| +const uint8 kTransparentAlpha = 0x00;
|
| +
|
| +bool AlphaBlend(const pp::ImageData& src, const pp::Rect& src_rc,
|
| + pp::ImageData* dest, const pp::Point& dest_origin,
|
| + uint8 alpha_adjustment);
|
| +
|
| +// Fill rectangle with gradient horizontally or vertically. Start is a color of
|
| +// top-left point of the rectangle, end color is a color of
|
| +// top-right (horizontal==true) or bottom-left (horizontal==false) point.
|
| +void GradientFill(pp::ImageData* image,
|
| + const pp::Rect& rc,
|
| + uint32 start_color,
|
| + uint32 end_color,
|
| + bool horizontal);
|
| +
|
| +// Fill dirty rectangle with gradient, where gradient color set for corners of
|
| +// gradient rectangle. Parts of the dirty rect outside of gradient rect will
|
| +// be unchanged.
|
| +void GradientFill(pp::Instance* instance,
|
| + pp::ImageData* image,
|
| + const pp::Rect& dirty_rc,
|
| + const pp::Rect& gradient_rc,
|
| + uint32 start_color,
|
| + uint32 end_color,
|
| + bool horizontal,
|
| + uint8 transparency);
|
| +
|
| +// Copy one image into another. If stretch is true, the result occupy the entire
|
| +// dest_rc. If stretch is false, dest_rc.point will be used as an origin of the
|
| +// result image. Copy will ignore all pixels with transparent alpha from the
|
| +// source image.
|
| +void CopyImage(const pp::ImageData& src, const pp::Rect& src_rc,
|
| + pp::ImageData* dest, const pp::Rect& dest_rc,
|
| + bool stretch);
|
| +
|
| +// Fill in rectangle with specified color.
|
| +void FillRect(pp::ImageData* image, const pp::Rect& rc, uint32 color);
|
| +
|
| +// Shadow Matrix contains matrix for shadow rendering. To reduce amount of
|
| +// calculations user may choose to cache matrix and reuse it if nothing changed.
|
| +class ShadowMatrix {
|
| + public:
|
| + // Matrix parameters.
|
| + // depth - how big matrix should be. Shadow will go smoothly across the
|
| + // entire matrix from black to background color.
|
| + // If factor == 1, smoothing will be linear from 0 to the end (depth),
|
| + // if 0 < factor < 1, smoothing will drop faster near 0.
|
| + // if factor > 1, smoothing will drop faster near the end (depth).
|
| + ShadowMatrix(uint32 depth, double factor, uint32 background);
|
| +
|
| + ~ShadowMatrix();
|
| +
|
| + uint32 GetValue(int32 x, int32 y) const { return matrix_[y * depth_ + x]; }
|
| +
|
| + uint32 depth() const { return depth_; }
|
| + double factor() const { return factor_; }
|
| + uint32 background() const { return background_; }
|
| +
|
| + private:
|
| + uint32 depth_;
|
| + double factor_;
|
| + uint32 background_;
|
| + std::vector<uint32> matrix_;
|
| +};
|
| +
|
| +// Draw shadow on the image using provided ShadowMatrix.
|
| +// shadow_rc - rectangle occupied by shadow
|
| +// object_rc - rectangle that drops the shadow
|
| +// clip_rc - clipping region
|
| +void DrawShadow(pp::ImageData* image,
|
| + const pp::Rect& shadow_rc,
|
| + const pp::Rect& object_rc,
|
| + const pp::Rect& clip_rc,
|
| + const ShadowMatrix& matrix);
|
| +
|
| +} // namespace chrome_pdf
|
| +
|
| +#endif // PDF_DRAW_UTILS_H_
|
|
|
| Property changes on: pdf\draw_utils.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|