Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(264)

Unified Diff: src/core/SkBitmapProcState.h

Issue 17381008: More general version of image filtering; reworked to be robust and easier to SSE (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/core/SkBitmapProcState.h
diff --git a/src/core/SkBitmapProcState.h b/src/core/SkBitmapProcState.h
index 7d754fe5092b45936097f3e7f0dd42ec45bfe257..fb21282addf66f93612617897567db04a24136ed 100644
--- a/src/core/SkBitmapProcState.h
+++ b/src/core/SkBitmapProcState.h
@@ -11,6 +11,7 @@
#define SkBitmapProcState_DEFINED
#include "SkBitmap.h"
+#include "SkBitmapFilter.h"
#include "SkMatrix.h"
#define FractionalInt_IS_64BIT
@@ -31,6 +32,8 @@
class SkPaint;
+#define SKBITMAP_FILTER_TABLE_SIZE 128
reed1 2013/06/18 20:21:21 // Where does this value come from?
humper 2013/06/19 20:49:26 Nowhere -- it's probably a little high, actually;
reed1 2013/06/19 21:14:09 Sorry. I was asking you to document 1. what it is
+
struct SkBitmapProcState {
typedef void (*ShaderProc32)(const SkBitmapProcState&, int x, int y,
@@ -122,6 +125,10 @@ struct SkBitmapProcState {
SampleProc32 getSampleProc32() const { return fSampleProc32; }
SampleProc16 getSampleProc16() const { return fSampleProc16; }
+ void buildFilterCoefficients( SkFixed dst[4], float t ) const;
+ SkFixed fFilterTable[SKBITMAP_FILTER_TABLE_SIZE];
+ SkBitmapFilter *fBitmapFilter;
+
private:
friend class SkBitmapProcShader;
@@ -140,11 +147,8 @@ private:
bool chooseProcs(const SkMatrix& inv, const SkPaint&);
ShaderProc32 chooseShaderProc32();
-
- /** test method for choosing a bicubic shading filter
- */
-
- ShaderProc32 chooseBicubicFilterProc(const SkPaint &paint);
+ ShaderProc32 chooseBitmapFilterProc(const SkPaint &paint);
+ void precomputeFilterTable();
// Return false if we failed to setup for fast translate (e.g. overflow)
bool setupForTranslate();
@@ -200,4 +204,10 @@ void ClampX_ClampY_nofilter_affine(const SkBitmapProcState& s,
void S32_D16_filter_DX(const SkBitmapProcState& s,
const uint32_t* xy, int count, uint16_t* colors);
+void highQualityFilter_ScaleOnly(const SkBitmapProcState &s, int x, int y,
+ SkPMColor *SK_RESTRICT colors, int count);
+void highQualityFilter(const SkBitmapProcState &s, int x, int y,
+ SkPMColor *SK_RESTRICT colors, int count);
+
+
#endif

Powered by Google App Engine
This is Rietveld 408576698