Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2010-03-14 21:22:04 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2010-03-14 21:22:04 +0300
commit7ecba90f652ae2b1f9ea5256ab3a418845c20213 (patch)
treeb77505cb626d3b837f48e086d92c71094286ef38 /source/blender/imbuf
parentd8d92b5d93e3553150fe9f28f1efbc4c3534c395 (diff)
Remove SAT texture filter. It's not working, thought it was but that's
because the mipmap was not being refreshed. Also this will be problematic to support when I add tile/mipmap cache, so would not rather not try to. Can be added back afterwards if someone wants to make it work.
Diffstat (limited to 'source/blender/imbuf')
-rw-r--r--source/blender/imbuf/IMB_imbuf.h2
-rw-r--r--source/blender/imbuf/intern/filter.c109
-rw-r--r--source/blender/imbuf/intern/tiff.c28
3 files changed, 23 insertions, 116 deletions
diff --git a/source/blender/imbuf/IMB_imbuf.h b/source/blender/imbuf/IMB_imbuf.h
index a77ef54b0b6..14c58496352 100644
--- a/source/blender/imbuf/IMB_imbuf.h
+++ b/source/blender/imbuf/IMB_imbuf.h
@@ -317,7 +317,7 @@ void IMB_antialias(struct ImBuf * ibuf);
void IMB_filter(struct ImBuf *ibuf);
void IMB_filterN(struct ImBuf *out, struct ImBuf *in);
void IMB_filter_extend(struct ImBuf *ibuf, char *mask);
-void IMB_makemipmap(struct ImBuf *ibuf, int use_filter, int SAT);
+void IMB_makemipmap(struct ImBuf *ibuf, int use_filter);
/**
*
diff --git a/source/blender/imbuf/intern/filter.c b/source/blender/imbuf/intern/filter.c
index 76ed0e2c61f..5692686a9bc 100644
--- a/source/blender/imbuf/intern/filter.c
+++ b/source/blender/imbuf/intern/filter.c
@@ -371,114 +371,21 @@ void IMB_filter_extend(struct ImBuf *ibuf, char *mask)
}
}
-#if 0
void IMB_makemipmap(ImBuf *ibuf, int use_filter)
{
- ImBuf *hbuf= ibuf;
- int minsize, curmap=0;
-
- minsize= ibuf->x<ibuf->y?ibuf->x:ibuf->y;
-
- while(minsize>10 && curmap<IB_MIPMAP_LEVELS) {
- if(use_filter) {
+ ImBuf *hbuf = ibuf;
+ int curmap = 0;
+ while (curmap < IB_MIPMAP_LEVELS) {
+ if (use_filter) {
ImBuf *nbuf= IMB_allocImBuf(hbuf->x, hbuf->y, 32, IB_rect, 0);
IMB_filterN(nbuf, hbuf);
- ibuf->mipmap[curmap]= IMB_onehalf(nbuf);
+ ibuf->mipmap[curmap] = IMB_onehalf(nbuf);
IMB_freeImBuf(nbuf);
}
- else {
- ibuf->mipmap[curmap]= IMB_onehalf(hbuf);
- }
- hbuf= ibuf->mipmap[curmap];
-
+ else ibuf->mipmap[curmap] = IMB_onehalf(hbuf);
+ hbuf = ibuf->mipmap[curmap];
+ if (hbuf->x == 1 && hbuf->y == 1) break;
curmap++;
- minsize= hbuf->x<hbuf->y?hbuf->x:hbuf->y;
}
}
-#endif
-void IMB_makemipmap(ImBuf *ibuf, int use_filter, int SAT)
-{
- if (SAT) {
- // to maximize precision subtract image average, use intermediate double SAT,
- // only convert to float at the end
- const double dv = 1.0/255.0;
- double avg[4] = {0, 0, 0, 0};
- const int x4 = ibuf->x << 2;
- int x, y, i;
- ImBuf* sbuf = IMB_allocImBuf(ibuf->x, ibuf->y, 32, IB_rectfloat, 0);
- double *satp, *satbuf = MEM_callocN(sizeof(double)*ibuf->x*ibuf->y*4, "tmp SAT buf");
- const double mf = ibuf->x*ibuf->y;
- float* fp;
- ibuf->mipmap[0] = sbuf;
- if (ibuf->rect_float) {
- fp = ibuf->rect_float;
- for (y=0; y<ibuf->y; ++y)
- for (x=0; x<ibuf->x; ++x) {
- avg[0] += *fp++;
- avg[1] += *fp++;
- avg[2] += *fp++;
- avg[3] += *fp++;
- }
- }
- else {
- char* cp = (char*)ibuf->rect;
- for (y=0; y<ibuf->y; ++y)
- for (x=0; x<ibuf->x; ++x) {
- avg[0] += *cp++ * dv;
- avg[1] += *cp++ * dv;
- avg[2] += *cp++ * dv;
- avg[3] += *cp++ * dv;
- }
- }
- avg[0] /= mf;
- avg[1] /= mf;
- avg[2] /= mf;
- avg[3] /= mf;
- for (y=0; y<ibuf->y; ++y)
- for (x=0; x<ibuf->x; ++x) {
- const unsigned int p = (x + y*ibuf->x) << 2;
- char* cp = (char*)ibuf->rect + p;
- fp = ibuf->rect_float + p;
- satp = satbuf + p;
- for (i=0; i<4; ++i, ++cp, ++fp, ++satp) {
- double sv = (ibuf->rect_float ? (double)*fp : (double)(*cp)*dv) - avg[i];
- if (x > 0) sv += satp[-4];
- if (y > 0) sv += satp[-x4];
- if (x > 0 && y > 0) sv -= satp[-x4 - 4];
- *satp = sv;
- }
- }
- fp = sbuf->rect_float;
- satp = satbuf;
- for (y=0; y<ibuf->y; ++y)
- for (x=0; x<ibuf->x; ++x) {
- *fp++ = (float)*satp++;
- *fp++ = (float)*satp++;
- *fp++ = (float)*satp++;
- *fp++ = (float)*satp++;
- }
- MEM_freeN(satbuf);
- fp = &sbuf->rect_float[(sbuf->x - 1 + (sbuf->y - 1)*sbuf->x) << 2];
- fp[0] = avg[0];
- fp[1] = avg[1];
- fp[2] = avg[2];
- fp[3] = avg[3];
- }
- else {
- ImBuf *hbuf = ibuf;
- int curmap = 0;
- while (curmap < IB_MIPMAP_LEVELS) {
- if (use_filter) {
- ImBuf *nbuf= IMB_allocImBuf(hbuf->x, hbuf->y, 32, IB_rect, 0);
- IMB_filterN(nbuf, hbuf);
- ibuf->mipmap[curmap] = IMB_onehalf(nbuf);
- IMB_freeImBuf(nbuf);
- }
- else ibuf->mipmap[curmap] = IMB_onehalf(hbuf);
- hbuf = ibuf->mipmap[curmap];
- if (hbuf->x == 1 && hbuf->y == 1) break;
- curmap++;
- }
- }
-}
diff --git a/source/blender/imbuf/intern/tiff.c b/source/blender/imbuf/intern/tiff.c
index 7ee31ff7d9a..5a31a705591 100644
--- a/source/blender/imbuf/intern/tiff.c
+++ b/source/blender/imbuf/intern/tiff.c
@@ -62,13 +62,13 @@
* Local declarations. *
***********************/
/* Reading and writing of an in-memory TIFF file. */
-tsize_t imb_tiff_ReadProc(thandle_t handle, tdata_t data, tsize_t n);
-tsize_t imb_tiff_WriteProc(thandle_t handle, tdata_t data, tsize_t n);
-toff_t imb_tiff_SeekProc(thandle_t handle, toff_t ofs, int whence);
-int imb_tiff_CloseProc(thandle_t handle);
-toff_t imb_tiff_SizeProc(thandle_t handle);
-int imb_tiff_DummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize);
-void imb_tiff_DummyUnmapProc(thandle_t fd, tdata_t base, toff_t size);
+static tsize_t imb_tiff_ReadProc(thandle_t handle, tdata_t data, tsize_t n);
+static tsize_t imb_tiff_WriteProc(thandle_t handle, tdata_t data, tsize_t n);
+static toff_t imb_tiff_SeekProc(thandle_t handle, toff_t ofs, int whence);
+static int imb_tiff_CloseProc(thandle_t handle);
+static toff_t imb_tiff_SizeProc(thandle_t handle);
+static int imb_tiff_DummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize);
+static void imb_tiff_DummyUnmapProc(thandle_t fd, tdata_t base, toff_t size);
/* Structure for in-memory TIFF file. */
@@ -86,11 +86,11 @@ struct ImbTIFFMemFile {
*****************************/
-void imb_tiff_DummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
+static void imb_tiff_DummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
-int imb_tiff_DummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
+static int imb_tiff_DummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return (0);
}
@@ -105,7 +105,7 @@ int imb_tiff_DummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
* @return: Number of bytes actually read.
* 0 = EOF.
*/
-tsize_t imb_tiff_ReadProc(thandle_t handle, tdata_t data, tsize_t n)
+static tsize_t imb_tiff_ReadProc(thandle_t handle, tdata_t data, tsize_t n)
{
tsize_t nRemaining, nCopy;
struct ImbTIFFMemFile* mfile;
@@ -147,7 +147,7 @@ tsize_t imb_tiff_ReadProc(thandle_t handle, tdata_t data, tsize_t n)
* NOTE: The current Blender implementation should not need this function. It
* is simply a stub.
*/
-tsize_t imb_tiff_WriteProc(thandle_t handle, tdata_t data, tsize_t n)
+static tsize_t imb_tiff_WriteProc(thandle_t handle, tdata_t data, tsize_t n)
{
printf("imb_tiff_WriteProc: this function should not be called.\n");
return (-1);
@@ -169,7 +169,7 @@ tsize_t imb_tiff_WriteProc(thandle_t handle, tdata_t data, tsize_t n)
* @return: Resulting offset location within the file, measured in bytes from
* the beginning of the file. (-1) indicates an error.
*/
-toff_t imb_tiff_SeekProc(thandle_t handle, toff_t ofs, int whence)
+static toff_t imb_tiff_SeekProc(thandle_t handle, toff_t ofs, int whence)
{
struct ImbTIFFMemFile *mfile;
toff_t new_offset;
@@ -216,7 +216,7 @@ toff_t imb_tiff_SeekProc(thandle_t handle, toff_t ofs, int whence)
*
* @return: 0
*/
-int imb_tiff_CloseProc(thandle_t handle)
+static int imb_tiff_CloseProc(thandle_t handle)
{
struct ImbTIFFMemFile *mfile;
@@ -242,7 +242,7 @@ int imb_tiff_CloseProc(thandle_t handle)
*
* @return: Size of file (in bytes).
*/
-toff_t imb_tiff_SizeProc(thandle_t handle)
+static toff_t imb_tiff_SizeProc(thandle_t handle)
{
struct ImbTIFFMemFile* mfile;