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:
authorAntony Riakiotakis <kalast@gmail.com>2015-02-23 19:19:06 +0300
committerAntony Riakiotakis <kalast@gmail.com>2015-02-23 19:19:31 +0300
commit67fcf5256d81ce7e80ab1f4c75fb81b43e634301 (patch)
treeafa1976d12e6b36d98d46e11fa94ad0516b0578e /source/blender
parent97422ea64ff0d0f017c51394a9239fc43041e2f6 (diff)
Move allocation of imbuf from array to allocimbuf.
Skip allocation of temporary imbuf
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/imbuf/IMB_imbuf.h14
-rw-r--r--source/blender/imbuf/intern/allocimbuf.c24
-rw-r--r--source/blender/imbuf/intern/scaling.c28
3 files changed, 31 insertions, 35 deletions
diff --git a/source/blender/imbuf/IMB_imbuf.h b/source/blender/imbuf/IMB_imbuf.h
index 299918a47a5..447a14b95c3 100644
--- a/source/blender/imbuf/IMB_imbuf.h
+++ b/source/blender/imbuf/IMB_imbuf.h
@@ -126,6 +126,13 @@ struct ImBuf *IMB_allocImBuf(unsigned int x, unsigned int y,
unsigned char d, unsigned int flags);
/**
+ * Create a copy of a pixel buffer and wrap it to a new ImBuf
+ * \attention Defined in allocimbuf.c
+ */
+struct ImBuf *IMB_allocFromBuffer(const unsigned int *rect, const float *rectf,
+ unsigned int w, unsigned int h);
+
+/**
*
* Increase reference count to imbuf
* (to delete an imbuf you have to call freeImBuf as many times as it
@@ -353,13 +360,6 @@ struct ImBuf *IMB_onehalf(struct ImBuf *ibuf1);
struct ImBuf *IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy);
/**
- * Create a copy of a pixel buffer and wrap it to a new ImBuf
- * \attention Defined in scaling.c
- */
-struct ImBuf *IMB_allocFromBuffer(const unsigned int *rect, const float *frect,
- unsigned int w, unsigned int h);
-
-/**
*
* \attention Defined in scaling.c
*/
diff --git a/source/blender/imbuf/intern/allocimbuf.c b/source/blender/imbuf/intern/allocimbuf.c
index 556c4beeae7..b28d19e3e15 100644
--- a/source/blender/imbuf/intern/allocimbuf.c
+++ b/source/blender/imbuf/intern/allocimbuf.c
@@ -362,6 +362,30 @@ bool imb_addrectImBuf(ImBuf *ibuf)
return false;
}
+struct ImBuf *IMB_allocFromBuffer(const unsigned int *rect, const float *rectf,
+ unsigned int w, unsigned int h)
+{
+ ImBuf *ibuf = NULL;
+
+ if (!(rect || rectf))
+ return NULL;
+
+ ibuf = IMB_allocImBuf(w, h, 32, 0);
+
+ if (rectf) {
+ ibuf->rect_float = MEM_dupallocN(rectf);
+ ibuf->flags |= IB_rectfloat;
+ ibuf->mall |= IB_rectfloat;
+ }
+ if (rect) {
+ ibuf->rect = MEM_dupallocN(rect);
+ ibuf->flags |= IB_rect;
+ ibuf->mall |= IB_rect;
+ }
+
+ return ibuf;
+}
+
bool imb_addtilesImBuf(ImBuf *ibuf)
{
if (ibuf == NULL) return false;
diff --git a/source/blender/imbuf/intern/scaling.c b/source/blender/imbuf/intern/scaling.c
index f7504210573..2601fe62c2f 100644
--- a/source/blender/imbuf/intern/scaling.c
+++ b/source/blender/imbuf/intern/scaling.c
@@ -1545,34 +1545,6 @@ struct ImBuf *IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int
return(ibuf);
}
-struct ImBuf *IMB_allocFromBuffer(const unsigned int *rect, const float *frect,
- unsigned int w, unsigned int h)
-{
- ImBuf *ibuf = NULL;
- ImBuf *tmpibuf = IMB_allocImBuf(w, h, 32, 0);
-
- if (frect) {
- /* allocate new image buffer and set the temporary buffer float buffer correctly */
- ibuf = IMB_allocImBuf(w, h, 32, IB_rectfloat);
- tmpibuf->rect_float = (float *)frect;
-
- IMB_rectcpy(ibuf, tmpibuf, 0, 0, 0, 0, w, h);
- }
- else if (rect) {
- ibuf = IMB_allocImBuf(w, h, 32, IB_rect);
- tmpibuf->rect = (unsigned int *)rect;
-
- IMB_rectcpy(ibuf, tmpibuf, 0, 0, 0, 0, w, h);
- }
-
- /* important, else we clean the source image imbufs! */
- tmpibuf->rect_float = NULL;
- tmpibuf->rect = NULL;
- IMB_freeImBuf(tmpibuf);
-
- return ibuf;
-}
-
struct imbufRGBA {
float r, g, b, a;
};