forked from bartvdbraak/blender
style cleanup
This commit is contained in:
parent
39ff86eb32
commit
9abd6e7651
@ -46,22 +46,22 @@
|
|||||||
#include "GHOST_C-api.h"
|
#include "GHOST_C-api.h"
|
||||||
|
|
||||||
#if defined(WIN32) || defined(__APPLE__)
|
#if defined(WIN32) || defined(__APPLE__)
|
||||||
#ifdef WIN32
|
# ifdef WIN32
|
||||||
#include <windows.h>
|
# include <windows.h>
|
||||||
#include <GL/gl.h>
|
# include <GL/gl.h>
|
||||||
#else /* WIN32 */
|
# else /* WIN32 */
|
||||||
/* __APPLE__ is defined */
|
/* __APPLE__ is defined */
|
||||||
#include <AGL/gl.h>
|
# include <AGL/gl.h>
|
||||||
#endif /* WIN32 */
|
# endif /* WIN32 */
|
||||||
#else /* defined(WIN32) || defined(__APPLE__) */
|
#else /* defined(WIN32) || defined(__APPLE__) */
|
||||||
#include <GL/gl.h>
|
# include <GL/gl.h>
|
||||||
#endif /* defined(WIN32) || defined(__APPLE__) */
|
#endif /* defined(WIN32) || defined(__APPLE__) */
|
||||||
|
|
||||||
|
|
||||||
static void gearsTimerProc(GHOST_TimerTaskHandle task, GHOST_TUns64 time);
|
static void gearsTimerProc(GHOST_TimerTaskHandle task, GHOST_TUns64 time);
|
||||||
int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData);
|
int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData);
|
||||||
|
|
||||||
static GLfloat view_rotx=20.0, view_roty=30.0, view_rotz=0.0;
|
static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0;
|
||||||
static GLfloat fAngle = 0.0;
|
static GLfloat fAngle = 0.0;
|
||||||
static int sExitRequested = 0;
|
static int sExitRequested = 0;
|
||||||
static GHOST_SystemHandle shSystem = NULL;
|
static GHOST_SystemHandle shSystem = NULL;
|
||||||
@ -87,34 +87,34 @@ static void gearGL(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GL
|
|||||||
const double pi = 3.14159264;
|
const double pi = 3.14159264;
|
||||||
|
|
||||||
r0 = inner_radius;
|
r0 = inner_radius;
|
||||||
r1 = (float)(outer_radius - tooth_depth/2.0);
|
r1 = (float)(outer_radius - tooth_depth / 2.0);
|
||||||
r2 = (float)(outer_radius + tooth_depth/2.0);
|
r2 = (float)(outer_radius + tooth_depth / 2.0);
|
||||||
|
|
||||||
da = (float)(2.0*pi / teeth / 4.0);
|
da = (float)(2.0 * pi / teeth / 4.0);
|
||||||
|
|
||||||
glShadeModel(GL_FLAT);
|
glShadeModel(GL_FLAT);
|
||||||
glNormal3f(0.0, 0.0, 1.0);
|
glNormal3f(0.0, 0.0, 1.0);
|
||||||
|
|
||||||
/* draw front face */
|
/* draw front face */
|
||||||
glBegin(GL_QUAD_STRIP);
|
glBegin(GL_QUAD_STRIP);
|
||||||
for (i=0;i<=teeth;i++) {
|
for (i = 0; i <= teeth; i++) {
|
||||||
angle = (float)(i * 2.0*pi / teeth);
|
angle = (float)(i * 2.0 * pi / teeth);
|
||||||
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(width*0.5));
|
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(width*0.5));
|
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(width*0.5));
|
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(width*0.5));
|
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5));
|
||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
/* draw front sides of teeth */
|
/* draw front sides of teeth */
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
da = (float)(2.0*pi / teeth / 4.0);
|
da = (float)(2.0 * pi / teeth / 4.0);
|
||||||
for (i=0;i<teeth;i++) {
|
for (i = 0; i < teeth; i++) {
|
||||||
angle = (float)(i * 2.0*pi / teeth);
|
angle = (float)(i * 2.0 * pi / teeth);
|
||||||
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(width*0.5));
|
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r2*cos(angle+da)), (float)(r2*sin(angle+da)), (float)(width*0.5));
|
glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r2*cos(angle+2*da)), (float)(r2*sin(angle+2*da)), (float)(width*0.5));
|
glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(width*0.5));
|
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5));
|
||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
@ -122,64 +122,64 @@ static void gearGL(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GL
|
|||||||
|
|
||||||
/* draw back face */
|
/* draw back face */
|
||||||
glBegin(GL_QUAD_STRIP);
|
glBegin(GL_QUAD_STRIP);
|
||||||
for (i=0;i<=teeth;i++) {
|
for (i = 0; i <= teeth; i++) {
|
||||||
angle = (float)(i * 2.0*pi / teeth);
|
angle = (float)(i * 2.0 * pi / teeth);
|
||||||
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(-width*0.5));
|
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5));
|
||||||
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(-width*0.5));
|
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5));
|
||||||
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(-width*0.5));
|
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5));
|
||||||
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(-width*0.5));
|
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5));
|
||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
/* draw back sides of teeth */
|
/* draw back sides of teeth */
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
da = (float)(2.0*pi / teeth / 4.0);
|
da = (float)(2.0 * pi / teeth / 4.0);
|
||||||
for (i=0;i<teeth;i++) {
|
for (i = 0; i < teeth; i++) {
|
||||||
angle = (float)(i * 2.0*pi / teeth);
|
angle = (float)(i * 2.0 * pi / teeth);
|
||||||
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(-width*0.5));
|
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5));
|
||||||
glVertex3f((float)(r2*cos(angle+2*da)), (float)(r2*sin(angle+2*da)), (float)(-width*0.5));
|
glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(-width * 0.5));
|
||||||
glVertex3f((float)(r2*cos(angle+da)), (float)(r2*sin(angle+da)), (float)(-width*0.5));
|
glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(-width * 0.5));
|
||||||
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(-width*0.5));
|
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5));
|
||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
/* draw outward faces of teeth */
|
/* draw outward faces of teeth */
|
||||||
glBegin(GL_QUAD_STRIP);
|
glBegin(GL_QUAD_STRIP);
|
||||||
for (i=0;i<teeth;i++) {
|
for (i = 0; i < teeth; i++) {
|
||||||
angle = (float)(i * 2.0*pi / teeth);
|
angle = (float)(i * 2.0 * pi / teeth);
|
||||||
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(width*0.5));
|
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r1*cos(angle)), (float)(r1*sin(angle)), (float)(-width*0.5));
|
glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5));
|
||||||
u = (float)(r2*cos(angle+da) - r1*cos(angle));
|
u = (float)(r2 * cos(angle + da) - r1 * cos(angle));
|
||||||
v = (float)(r2*sin(angle+da) - r1*sin(angle));
|
v = (float)(r2 * sin(angle + da) - r1 * sin(angle));
|
||||||
len = (float)(sqrt(u*u + v*v));
|
len = (float)(sqrt(u * u + v * v));
|
||||||
u /= len;
|
u /= len;
|
||||||
v /= len;
|
v /= len;
|
||||||
glNormal3f(v, -u, 0.0);
|
glNormal3f(v, -u, 0.0);
|
||||||
glVertex3f((float)(r2*cos(angle+da)), (float)(r2*sin(angle+da)), (float)(width*0.5));
|
glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r2*cos(angle+da)), (float)(r2*sin(angle+da)), (float)(-width*0.5));
|
glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(-width * 0.5));
|
||||||
glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0);
|
glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0);
|
||||||
glVertex3f((float)(r2*cos(angle+2*da)), (float)(r2*sin(angle+2*da)), (float)(width*0.5));
|
glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r2*cos(angle+2*da)), (float)(r2*sin(angle+2*da)), (float)(-width*0.5));
|
glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(-width * 0.5));
|
||||||
u = (float)(r1*cos(angle+3*da) - r2*cos(angle+2*da));
|
u = (float)(r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da));
|
||||||
v = (float)(r1*sin(angle+3*da) - r2*sin(angle+2*da));
|
v = (float)(r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da));
|
||||||
glNormal3f(v, -u, 0.0);
|
glNormal3f(v, -u, 0.0);
|
||||||
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(width*0.5));
|
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r1*cos(angle+3*da)), (float)(r1*sin(angle+3*da)), (float)(-width*0.5));
|
glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5));
|
||||||
glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0);
|
glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0);
|
||||||
}
|
}
|
||||||
glVertex3f((float)(r1*cos(0.0)), (float)(r1*sin(0.0)), (float)(width*0.5));
|
glVertex3f((float)(r1 * cos(0.0)), (float)(r1 * sin(0.0)), (float)(width * 0.5));
|
||||||
glVertex3f((float)(r1*cos(0.0)), (float)(r1*sin(0.0)), (float)(-width*0.5));
|
glVertex3f((float)(r1 * cos(0.0)), (float)(r1 * sin(0.0)), (float)(-width * 0.5));
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
glShadeModel(GL_SMOOTH);
|
glShadeModel(GL_SMOOTH);
|
||||||
|
|
||||||
/* draw inside radius cylinder */
|
/* draw inside radius cylinder */
|
||||||
glBegin(GL_QUAD_STRIP);
|
glBegin(GL_QUAD_STRIP);
|
||||||
for (i=0;i<=teeth;i++) {
|
for (i = 0; i <= teeth; i++) {
|
||||||
angle = (float)(i * 2.0*pi / teeth);
|
angle = (float)(i * 2.0 * pi / teeth);
|
||||||
glNormal3f((float)(-cos(angle)), (float)(-sin(angle)), 0.0);
|
glNormal3f((float)(-cos(angle)), (float)(-sin(angle)), 0.0);
|
||||||
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(-width*0.5));
|
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5));
|
||||||
glVertex3f((float)(r0*cos(angle)), (float)(r0*sin(angle)), (float)(width*0.5));
|
glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5));
|
||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
@ -201,20 +201,20 @@ static void drawGearGL(int id)
|
|||||||
|
|
||||||
switch (id)
|
switch (id)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ared);
|
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ared);
|
||||||
gearGL(1.0f, 4.0f, 1.0f, 20, 0.7f);
|
gearGL(1.0f, 4.0f, 1.0f, 20, 0.7f);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agreen);
|
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agreen);
|
||||||
gearGL(0.5f, 2.0f, 2.0f, 10, 0.7f);
|
gearGL(0.5f, 2.0f, 2.0f, 10, 0.7f);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ablue);
|
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ablue);
|
||||||
gearGL(1.3f, 2.0f, 0.5f, 10, 0.7f);
|
gearGL(1.3f, 2.0f, 0.5f, 10, 0.7f);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
glEnable(GL_NORMALIZE);
|
glEnable(GL_NORMALIZE);
|
||||||
}
|
}
|
||||||
@ -238,14 +238,14 @@ static void drawGL(void)
|
|||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(3.1f, -2.0f, 0.0f);
|
glTranslatef(3.1f, -2.0f, 0.0f);
|
||||||
glRotatef((float)(-2.0*fAngle-9.0), 0.0, 0.0, 1.0);
|
glRotatef((float)(-2.0 * fAngle - 9.0), 0.0, 0.0, 1.0);
|
||||||
drawGearGL(2);
|
drawGearGL(2);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(-3.1f, 2.2f, -1.8f);
|
glTranslatef(-3.1f, 2.2f, -1.8f);
|
||||||
glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
|
glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
|
||||||
glRotatef((float)(2.0*fAngle-2.0), 0.0, 0.0, 1.0);
|
glRotatef((float)(2.0 * fAngle - 2.0), 0.0, 0.0, 1.0);
|
||||||
drawGearGL(3);
|
drawGearGL(3);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ static void setViewPortGL(GHOST_WindowHandle hWindow)
|
|||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glTranslatef(0.0, 0.0, -40.0);
|
glTranslatef(0.0, 0.0, -40.0);
|
||||||
|
|
||||||
glClearColor(.2f,0.0f,0.0f,0.0f);
|
glClearColor(.2f, 0.0f, 0.0f, 0.0f);
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
GHOST_DisposeRectangle(hRect);
|
GHOST_DisposeRectangle(hRect);
|
||||||
@ -287,44 +287,43 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
|
|||||||
int handled = 1;
|
int handled = 1;
|
||||||
int cursor;
|
int cursor;
|
||||||
int visibility;
|
int visibility;
|
||||||
GHOST_TEventKeyData* keyData = NULL;
|
GHOST_TEventKeyData *keyData = NULL;
|
||||||
GHOST_TEventWheelData* wheelData = NULL;
|
GHOST_TEventWheelData *wheelData = NULL;
|
||||||
GHOST_DisplaySetting setting;
|
GHOST_DisplaySetting setting;
|
||||||
GHOST_WindowHandle window = GHOST_GetEventWindow(hEvent);
|
GHOST_WindowHandle window = GHOST_GetEventWindow(hEvent);
|
||||||
|
|
||||||
switch (GHOST_GetEventType(hEvent))
|
switch (GHOST_GetEventType(hEvent))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
case GHOST_kEventUnknown:
|
case GHOST_kEventUnknown:
|
||||||
break;
|
break;
|
||||||
case GHOST_kEventCursorButton:
|
case GHOST_kEventCursorButton:
|
||||||
break;
|
break;
|
||||||
case GHOST_kEventCursorMove:
|
case GHOST_kEventCursorMove:
|
||||||
break;
|
break;
|
||||||
*/
|
*/
|
||||||
case GHOST_kEventWheel:
|
case GHOST_kEventWheel:
|
||||||
{
|
{
|
||||||
wheelData = (GHOST_TEventWheelData*)GHOST_GetEventData(hEvent);
|
wheelData = (GHOST_TEventWheelData *)GHOST_GetEventData(hEvent);
|
||||||
if (wheelData->z > 0)
|
if (wheelData->z > 0)
|
||||||
{
|
{
|
||||||
view_rotz += 5.f;
|
view_rotz += 5.f;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
view_rotz -= 5.f;
|
||||||
view_rotz -= 5.f;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GHOST_kEventKeyUp:
|
case GHOST_kEventKeyUp:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GHOST_kEventKeyDown:
|
case GHOST_kEventKeyDown:
|
||||||
{
|
{
|
||||||
keyData = (GHOST_TEventKeyData*)GHOST_GetEventData(hEvent);
|
keyData = (GHOST_TEventKeyData *)GHOST_GetEventData(hEvent);
|
||||||
switch (keyData->key)
|
switch (keyData->key)
|
||||||
{
|
{
|
||||||
case GHOST_kKeyC:
|
case GHOST_kKeyC:
|
||||||
{
|
{
|
||||||
cursor = sCursor;
|
cursor = sCursor;
|
||||||
cursor++;
|
cursor++;
|
||||||
@ -336,62 +335,60 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
|
|||||||
GHOST_SetCursorShape(window, sCursor);
|
GHOST_SetCursorShape(window, sCursor);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GHOST_kKeyF:
|
case GHOST_kKeyF:
|
||||||
if (!GHOST_GetFullScreen(shSystem))
|
if (!GHOST_GetFullScreen(shSystem))
|
||||||
{
|
{
|
||||||
/* Begin fullscreen mode */
|
/* Begin fullscreen mode */
|
||||||
setting.bpp = 24;
|
setting.bpp = 24;
|
||||||
setting.frequency = 85;
|
setting.frequency = 85;
|
||||||
setting.xPixels = 640;
|
setting.xPixels = 640;
|
||||||
setting.yPixels = 480;
|
setting.yPixels = 480;
|
||||||
|
|
||||||
/*
|
|
||||||
setting.bpp = 16;
|
|
||||||
setting.frequency = 75;
|
|
||||||
setting.xPixels = 640;
|
|
||||||
setting.yPixels = 480;
|
|
||||||
*/
|
|
||||||
|
|
||||||
sFullScreenWindow = GHOST_BeginFullScreen(shSystem, &setting,
|
/*
|
||||||
|
setting.bpp = 16;
|
||||||
|
setting.frequency = 75;
|
||||||
|
setting.xPixels = 640;
|
||||||
|
setting.yPixels = 480;
|
||||||
|
*/
|
||||||
|
|
||||||
FALSE /* stereo flag */);
|
sFullScreenWindow = GHOST_BeginFullScreen(shSystem, &setting,
|
||||||
}
|
|
||||||
else
|
FALSE /* stereo flag */);
|
||||||
{
|
}
|
||||||
GHOST_EndFullScreen(shSystem);
|
else {
|
||||||
sFullScreenWindow = 0;
|
GHOST_EndFullScreen(shSystem);
|
||||||
}
|
sFullScreenWindow = 0;
|
||||||
break;
|
}
|
||||||
case GHOST_kKeyH:
|
break;
|
||||||
|
case GHOST_kKeyH:
|
||||||
{
|
{
|
||||||
visibility = GHOST_GetCursorVisibility(window);
|
visibility = GHOST_GetCursorVisibility(window);
|
||||||
GHOST_SetCursorVisibility(window, !visibility);
|
GHOST_SetCursorVisibility(window, !visibility);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GHOST_kKeyQ:
|
case GHOST_kKeyQ:
|
||||||
if (GHOST_GetFullScreen(shSystem))
|
if (GHOST_GetFullScreen(shSystem))
|
||||||
{
|
{
|
||||||
GHOST_EndFullScreen(shSystem);
|
GHOST_EndFullScreen(shSystem);
|
||||||
sFullScreenWindow = 0;
|
sFullScreenWindow = 0;
|
||||||
}
|
}
|
||||||
sExitRequested = 1;
|
sExitRequested = 1;
|
||||||
case GHOST_kKeyT:
|
case GHOST_kKeyT:
|
||||||
if (!sTestTimer)
|
if (!sTestTimer)
|
||||||
{
|
{
|
||||||
sTestTimer = GHOST_InstallTimer(shSystem, 0, 1000, testTimerProc, NULL);
|
sTestTimer = GHOST_InstallTimer(shSystem, 0, 1000, testTimerProc, NULL);
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
GHOST_RemoveTimer(shSystem, sTestTimer);
|
||||||
GHOST_RemoveTimer(shSystem, sTestTimer);
|
sTestTimer = 0;
|
||||||
sTestTimer = 0;
|
}
|
||||||
}
|
break;
|
||||||
break;
|
case GHOST_kKeyW:
|
||||||
case GHOST_kKeyW:
|
|
||||||
{
|
{
|
||||||
if (sMainWindow)
|
if (sMainWindow)
|
||||||
{
|
{
|
||||||
char *title = GHOST_GetTitle(sMainWindow);
|
char *title = GHOST_GetTitle(sMainWindow);
|
||||||
char *ntitle = malloc(strlen(title)+2);
|
char *ntitle = malloc(strlen(title) + 2);
|
||||||
|
|
||||||
sprintf(ntitle, "%s-", title);
|
sprintf(ntitle, "%s-", title);
|
||||||
GHOST_SetTitle(sMainWindow, ntitle);
|
GHOST_SetTitle(sMainWindow, ntitle);
|
||||||
@ -401,21 +398,20 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GHOST_kEventWindowClose:
|
case GHOST_kEventWindowClose:
|
||||||
{
|
{
|
||||||
GHOST_WindowHandle window2 = GHOST_GetEventWindow(hEvent);
|
GHOST_WindowHandle window2 = GHOST_GetEventWindow(hEvent);
|
||||||
if (window2 == sMainWindow)
|
if (window2 == sMainWindow)
|
||||||
{
|
{
|
||||||
sExitRequested = 1;
|
sExitRequested = 1;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
if (sGearsTimer)
|
if (sGearsTimer)
|
||||||
{
|
{
|
||||||
GHOST_RemoveTimer(shSystem, sGearsTimer);
|
GHOST_RemoveTimer(shSystem, sGearsTimer);
|
||||||
@ -426,13 +422,13 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GHOST_kEventWindowActivate:
|
case GHOST_kEventWindowActivate:
|
||||||
handled = 0;
|
handled = 0;
|
||||||
break;
|
break;
|
||||||
case GHOST_kEventWindowDeactivate:
|
case GHOST_kEventWindowDeactivate:
|
||||||
handled = 0;
|
handled = 0;
|
||||||
break;
|
break;
|
||||||
case GHOST_kEventWindowUpdate:
|
case GHOST_kEventWindowUpdate:
|
||||||
{
|
{
|
||||||
GHOST_WindowHandle window2 = GHOST_GetEventWindow(hEvent);
|
GHOST_WindowHandle window2 = GHOST_GetEventWindow(hEvent);
|
||||||
if (!GHOST_ValidWindow(shSystem, window2))
|
if (!GHOST_ValidWindow(shSystem, window2))
|
||||||
@ -443,18 +439,18 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
handled = 0;
|
handled = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return handled;
|
return handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char* title1 = "gears - main window";
|
char *title1 = "gears - main window";
|
||||||
char* title2 = "gears - secondary window";
|
char *title2 = "gears - secondary window";
|
||||||
GHOST_EventConsumerHandle consumer = GHOST_CreateEventConsumer(processEvent, NULL);
|
GHOST_EventConsumerHandle consumer = GHOST_CreateEventConsumer(processEvent, NULL);
|
||||||
|
|
||||||
/* Create the system */
|
/* Create the system */
|
||||||
@ -465,15 +461,15 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
/* Create the main window */
|
/* Create the main window */
|
||||||
sMainWindow = GHOST_CreateWindow(shSystem,
|
sMainWindow = GHOST_CreateWindow(shSystem,
|
||||||
title1,
|
title1,
|
||||||
10,
|
10,
|
||||||
64,
|
64,
|
||||||
320,
|
320,
|
||||||
200,
|
200,
|
||||||
GHOST_kWindowStateNormal,
|
GHOST_kWindowStateNormal,
|
||||||
GHOST_kDrawingContextTypeOpenGL,
|
GHOST_kDrawingContextTypeOpenGL,
|
||||||
FALSE,
|
FALSE,
|
||||||
FALSE);
|
FALSE);
|
||||||
if (!sMainWindow)
|
if (!sMainWindow)
|
||||||
{
|
{
|
||||||
printf("could not create main window\n");
|
printf("could not create main window\n");
|
||||||
@ -482,15 +478,15 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
/* Create a secondary window */
|
/* Create a secondary window */
|
||||||
sSecondaryWindow = GHOST_CreateWindow(shSystem,
|
sSecondaryWindow = GHOST_CreateWindow(shSystem,
|
||||||
title2,
|
title2,
|
||||||
340,
|
340,
|
||||||
64,
|
64,
|
||||||
320,
|
320,
|
||||||
200,
|
200,
|
||||||
GHOST_kWindowStateNormal,
|
GHOST_kWindowStateNormal,
|
||||||
GHOST_kDrawingContextTypeOpenGL,
|
GHOST_kDrawingContextTypeOpenGL,
|
||||||
FALSE,
|
FALSE,
|
||||||
FALSE);
|
FALSE);
|
||||||
if (!sSecondaryWindow)
|
if (!sSecondaryWindow)
|
||||||
{
|
{
|
||||||
printf("could not create secondary window\n");
|
printf("could not create secondary window\n");
|
||||||
@ -498,11 +494,11 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Install a timer to have the gears running */
|
/* Install a timer to have the gears running */
|
||||||
sGearsTimer = GHOST_InstallTimer(shSystem,
|
sGearsTimer = GHOST_InstallTimer(shSystem,
|
||||||
0,
|
0,
|
||||||
10,
|
10,
|
||||||
gearsTimerProc,
|
gearsTimerProc,
|
||||||
sMainWindow);
|
sMainWindow);
|
||||||
|
|
||||||
/* Enter main loop */
|
/* Enter main loop */
|
||||||
while (!sExitRequested)
|
while (!sExitRequested)
|
||||||
@ -547,8 +543,7 @@ static void gearsTimerProc(GHOST_TimerTaskHandle hTask, GHOST_TUns64 time)
|
|||||||
/* Running full screen */
|
/* Running full screen */
|
||||||
GHOST_InvalidateWindow(sFullScreenWindow);
|
GHOST_InvalidateWindow(sFullScreenWindow);
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
if (GHOST_ValidWindow(shSystem, hWindow))
|
if (GHOST_ValidWindow(shSystem, hWindow))
|
||||||
{
|
{
|
||||||
GHOST_InvalidateWindow(hWindow);
|
GHOST_InvalidateWindow(hWindow);
|
||||||
|
@ -40,17 +40,17 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#if defined(WIN32) || defined(__APPLE__)
|
#if defined(WIN32) || defined(__APPLE__)
|
||||||
#ifdef WIN32
|
# ifdef WIN32
|
||||||
#include <windows.h>
|
# include <windows.h>
|
||||||
#include <atlbase.h>
|
# include <atlbase.h>
|
||||||
|
|
||||||
#include <GL/gl.h>
|
# include <GL/gl.h>
|
||||||
#else // WIN32
|
# else // WIN32
|
||||||
// __APPLE__ is defined
|
// __APPLE__ is defined
|
||||||
#include <AGL/gl.h>
|
# include <AGL/gl.h>
|
||||||
#endif // WIN32
|
# endif // WIN32
|
||||||
#else // defined(WIN32) || defined(__APPLE__)
|
#else // defined(WIN32) || defined(__APPLE__)
|
||||||
#include <GL/gl.h>
|
# include <GL/gl.h>
|
||||||
#endif // defined(WIN32) || defined(__APPLE__)
|
#endif // defined(WIN32) || defined(__APPLE__)
|
||||||
|
|
||||||
#include "STR_String.h"
|
#include "STR_String.h"
|
||||||
|
@ -27,37 +27,47 @@
|
|||||||
|
|
||||||
#include "Basic.h"
|
#include "Basic.h"
|
||||||
|
|
||||||
int min_i(int a, int b) {
|
int min_i(int a, int b)
|
||||||
return (a<b)?a:b;
|
{
|
||||||
|
return (a < b) ? a : b;
|
||||||
}
|
}
|
||||||
int max_i(int a, int b) {
|
int max_i(int a, int b)
|
||||||
return (b<a)?a:b;
|
{
|
||||||
|
return (b < a) ? a : b;
|
||||||
}
|
}
|
||||||
int clamp_i(int val, int min, int max) {
|
int clamp_i(int val, int min, int max)
|
||||||
|
{
|
||||||
return min_i(max_i(val, min), max);
|
return min_i(max_i(val, min), max);
|
||||||
}
|
}
|
||||||
|
|
||||||
float min_f(float a, float b) {
|
float min_f(float a, float b)
|
||||||
return (a<b)?a:b;
|
{
|
||||||
|
return (a < b) ? a : b;
|
||||||
}
|
}
|
||||||
float max_f(float a, float b) {
|
float max_f(float a, float b)
|
||||||
return (b<a)?a:b;
|
{
|
||||||
|
return (b < a) ? a : b;
|
||||||
}
|
}
|
||||||
float clamp_f(float val, float min, float max) {
|
float clamp_f(float val, float min, float max)
|
||||||
|
{
|
||||||
return min_f(max_f(val, min), max);
|
return min_f(max_f(val, min), max);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rect_copy(int dst[2][2], int src[2][2]) {
|
void rect_copy(int dst[2][2], int src[2][2])
|
||||||
dst[0][0]= src[0][0], dst[0][1]= src[0][1];
|
{
|
||||||
dst[1][0]= src[1][0], dst[1][1]= src[1][1];
|
dst[0][0] = src[0][0], dst[0][1] = src[0][1];
|
||||||
|
dst[1][0] = src[1][0], dst[1][1] = src[1][1];
|
||||||
}
|
}
|
||||||
int rect_contains_pt(int rect[2][2], int pt[2]){
|
int rect_contains_pt(int rect[2][2], int pt[2])
|
||||||
|
{
|
||||||
return ((rect[0][0] <= pt[0] && pt[0] <= rect[1][0]) &&
|
return ((rect[0][0] <= pt[0] && pt[0] <= rect[1][0]) &&
|
||||||
(rect[0][1] <= pt[1] && pt[1] <= rect[1][1]));
|
(rect[0][1] <= pt[1] && pt[1] <= rect[1][1]));
|
||||||
}
|
}
|
||||||
int rect_width(int rect[2][2]) {
|
int rect_width(int rect[2][2])
|
||||||
return (rect[1][0]-rect[0][0]);
|
{
|
||||||
|
return (rect[1][0] - rect[0][0]);
|
||||||
}
|
}
|
||||||
int rect_height(int rect[2][2]) {
|
int rect_height(int rect[2][2])
|
||||||
return (rect[1][1]-rect[0][1]);
|
{
|
||||||
|
return (rect[1][1] - rect[0][1]);
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -35,107 +35,124 @@
|
|||||||
#include "ScrollBar.h"
|
#include "ScrollBar.h"
|
||||||
|
|
||||||
struct _ScrollBar {
|
struct _ScrollBar {
|
||||||
int rect[2][2];
|
int rect[2][2];
|
||||||
float thumbpos, thumbpct;
|
float thumbpos, thumbpct;
|
||||||
|
|
||||||
int inset;
|
int inset;
|
||||||
int minthumb;
|
int minthumb;
|
||||||
|
|
||||||
int scrolling;
|
int scrolling;
|
||||||
float scrolloffs;
|
float scrolloffs;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int scrollbar_get_thumbH(ScrollBar *sb) {
|
static int scrollbar_get_thumbH(ScrollBar *sb)
|
||||||
int scrollable_h= rect_height(sb->rect) - 2*sb->inset;
|
{
|
||||||
|
int scrollable_h = rect_height(sb->rect) - 2 * sb->inset;
|
||||||
|
|
||||||
return clamp_i(sb->thumbpct*scrollable_h, sb->minthumb, scrollable_h);
|
return clamp_i(sb->thumbpct * scrollable_h, sb->minthumb, scrollable_h);
|
||||||
}
|
}
|
||||||
static int scrollbar_get_thumbableH(ScrollBar *sb) {
|
|
||||||
int scrollable_h= rect_height(sb->rect) - 2*sb->inset;
|
static int scrollbar_get_thumbableH(ScrollBar *sb)
|
||||||
int thumb_h= scrollbar_get_thumbH(sb);
|
{
|
||||||
|
int scrollable_h = rect_height(sb->rect) - 2 * sb->inset;
|
||||||
|
int thumb_h = scrollbar_get_thumbH(sb);
|
||||||
|
|
||||||
return scrollable_h - thumb_h;
|
return scrollable_h - thumb_h;
|
||||||
}
|
}
|
||||||
|
|
||||||
static float scrollbar_co_to_pos(ScrollBar *sb, int yco) {
|
static float scrollbar_co_to_pos(ScrollBar *sb, int yco)
|
||||||
int thumb_h= scrollbar_get_thumbH(sb);
|
{
|
||||||
int thumbable_h= scrollbar_get_thumbableH(sb);
|
int thumb_h = scrollbar_get_thumbH(sb);
|
||||||
int thumbable_y= (sb->rect[0][1]+sb->inset) + thumb_h/2;
|
int thumbable_h = scrollbar_get_thumbableH(sb);
|
||||||
|
int thumbable_y = (sb->rect[0][1] + sb->inset) + thumb_h / 2;
|
||||||
|
|
||||||
return (float) (yco-thumbable_y)/thumbable_h;
|
return (float) (yco - thumbable_y) / thumbable_h;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
ScrollBar *scrollbar_new(int inset, int minthumb) {
|
ScrollBar *scrollbar_new(int inset, int minthumb)
|
||||||
ScrollBar *sb= MEM_callocN(sizeof(*sb), "scrollbar_new");
|
{
|
||||||
sb->inset= inset;
|
ScrollBar *sb = MEM_callocN(sizeof(*sb), "scrollbar_new");
|
||||||
sb->minthumb= minthumb;
|
sb->inset = inset;
|
||||||
|
sb->minthumb = minthumb;
|
||||||
|
|
||||||
return sb;
|
return sb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void scrollbar_get_thumb(ScrollBar *sb, int thumb_r[2][2]) {
|
void scrollbar_get_thumb(ScrollBar *sb, int thumb_r[2][2])
|
||||||
int thumb_h= scrollbar_get_thumbH(sb);
|
{
|
||||||
int thumbable_h= scrollbar_get_thumbableH(sb);
|
int thumb_h = scrollbar_get_thumbH(sb);
|
||||||
|
int thumbable_h = scrollbar_get_thumbableH(sb);
|
||||||
|
|
||||||
thumb_r[0][0]= sb->rect[0][0]+sb->inset;
|
thumb_r[0][0] = sb->rect[0][0] + sb->inset;
|
||||||
thumb_r[1][0]= sb->rect[1][0]-sb->inset;
|
thumb_r[1][0] = sb->rect[1][0] - sb->inset;
|
||||||
|
|
||||||
thumb_r[0][1]= sb->rect[0][1]+sb->inset + sb->thumbpos*thumbable_h;
|
thumb_r[0][1] = sb->rect[0][1] + sb->inset + sb->thumbpos * thumbable_h;
|
||||||
thumb_r[1][1]= thumb_r[0][1] + thumb_h;
|
thumb_r[1][1] = thumb_r[0][1] + thumb_h;
|
||||||
}
|
}
|
||||||
|
|
||||||
int scrollbar_is_scrolling(ScrollBar *sb) {
|
int scrollbar_is_scrolling(ScrollBar *sb)
|
||||||
|
{
|
||||||
return sb->scrolling;
|
return sb->scrolling;
|
||||||
}
|
}
|
||||||
int scrollbar_contains_pt(ScrollBar *sb, int pt[2]) {
|
int scrollbar_contains_pt(ScrollBar *sb, int pt[2]) {
|
||||||
return rect_contains_pt(sb->rect, pt);
|
return rect_contains_pt(sb->rect, pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void scrollbar_start_scrolling(ScrollBar *sb, int yco) {
|
void scrollbar_start_scrolling(ScrollBar *sb, int yco)
|
||||||
int thumb_h_2= scrollbar_get_thumbH(sb)/2;
|
{
|
||||||
int thumbable_h= scrollbar_get_thumbableH(sb);
|
int thumb_h_2 = scrollbar_get_thumbH(sb) / 2;
|
||||||
float npos= scrollbar_co_to_pos(sb, yco);
|
int thumbable_h = scrollbar_get_thumbableH(sb);
|
||||||
|
float npos = scrollbar_co_to_pos(sb, yco);
|
||||||
|
|
||||||
sb->scrolloffs= sb->thumbpos - npos;
|
sb->scrolloffs = sb->thumbpos - npos;
|
||||||
if (fabs(sb->scrolloffs) >= (float) thumb_h_2/thumbable_h) {
|
if (fabs(sb->scrolloffs) >= (float) thumb_h_2 / thumbable_h) {
|
||||||
sb->scrolloffs= 0.0;
|
sb->scrolloffs = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sb->scrolling= 1;
|
sb->scrolling = 1;
|
||||||
sb->thumbpos= clamp_f(npos + sb->scrolloffs, 0.0, 1.0);
|
sb->thumbpos = clamp_f(npos + sb->scrolloffs, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
void scrollbar_keep_scrolling(ScrollBar *sb, int yco) {
|
void scrollbar_keep_scrolling(ScrollBar *sb, int yco)
|
||||||
float npos= scrollbar_co_to_pos(sb, yco);
|
{
|
||||||
|
float npos = scrollbar_co_to_pos(sb, yco);
|
||||||
|
|
||||||
sb->thumbpos= clamp_f(npos + sb->scrolloffs, 0.0, 1.0);
|
sb->thumbpos = clamp_f(npos + sb->scrolloffs, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
void scrollbar_stop_scrolling(ScrollBar *sb) {
|
void scrollbar_stop_scrolling(ScrollBar *sb)
|
||||||
sb->scrolling= 0;
|
{
|
||||||
sb->scrolloffs= 0.0;
|
sb->scrolling = 0;
|
||||||
|
sb->scrolloffs = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void scrollbar_set_thumbpct(ScrollBar *sb, float pct) {
|
void scrollbar_set_thumbpct(ScrollBar *sb, float pct)
|
||||||
sb->thumbpct= pct;
|
{
|
||||||
|
sb->thumbpct = pct;
|
||||||
}
|
}
|
||||||
void scrollbar_set_thumbpos(ScrollBar *sb, float pos) {
|
void scrollbar_set_thumbpos(ScrollBar *sb, float pos)
|
||||||
sb->thumbpos= clamp_f(pos, 0.0, 1.0);
|
{
|
||||||
|
sb->thumbpos = clamp_f(pos, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
void scrollbar_set_rect(ScrollBar *sb, int rect[2][2]) {
|
void scrollbar_set_rect(ScrollBar *sb, int rect[2][2])
|
||||||
|
{
|
||||||
rect_copy(sb->rect, rect);
|
rect_copy(sb->rect, rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
float scrollbar_get_thumbpct(ScrollBar *sb) {
|
float scrollbar_get_thumbpct(ScrollBar *sb)
|
||||||
|
{
|
||||||
return sb->thumbpct;
|
return sb->thumbpct;
|
||||||
}
|
}
|
||||||
float scrollbar_get_thumbpos(ScrollBar *sb) {
|
float scrollbar_get_thumbpos(ScrollBar *sb)
|
||||||
|
{
|
||||||
return sb->thumbpos;
|
return sb->thumbpos;
|
||||||
}
|
}
|
||||||
void scrollbar_get_rect(ScrollBar *sb, int rect_r[2][2]) {
|
void scrollbar_get_rect(ScrollBar *sb, int rect_r[2][2])
|
||||||
|
{
|
||||||
rect_copy(rect_r, sb->rect);
|
rect_copy(rect_r, sb->rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
void scrollbar_free(ScrollBar *sb) {
|
void scrollbar_free(ScrollBar *sb)
|
||||||
|
{
|
||||||
MEM_freeN(sb);
|
MEM_freeN(sb);
|
||||||
}
|
}
|
||||||
|
@ -35,28 +35,31 @@
|
|||||||
|
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
|
|
||||||
void* memdbl(void *mem, int *size_pr, int item_size) {
|
void *memdbl(void *mem, int *size_pr, int item_size)
|
||||||
int cur_size= *size_pr;
|
{
|
||||||
int new_size= cur_size?(cur_size*2):1;
|
int cur_size = *size_pr;
|
||||||
void *nmem= MEM_mallocN(new_size*item_size, "memdbl");
|
int new_size = cur_size ? (cur_size * 2) : 1;
|
||||||
|
void *nmem = MEM_mallocN(new_size * item_size, "memdbl");
|
||||||
|
|
||||||
memcpy(nmem, mem, cur_size*item_size);
|
memcpy(nmem, mem, cur_size * item_size);
|
||||||
MEM_freeN(mem);
|
MEM_freeN(mem);
|
||||||
|
|
||||||
*size_pr= new_size;
|
*size_pr = new_size;
|
||||||
return nmem;
|
return nmem;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* string_dup(char *str) {
|
char *string_dup(char *str)
|
||||||
int len= strlen(str);
|
{
|
||||||
char *nstr= MEM_mallocN(len + 1, "string_dup");
|
int len = strlen(str);
|
||||||
|
char *nstr = MEM_mallocN(len + 1, "string_dup");
|
||||||
|
|
||||||
memcpy(nstr, str, len+1);
|
memcpy(nstr, str, len + 1);
|
||||||
|
|
||||||
return nstr;
|
return nstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fatal(char *fmt, ...) {
|
void fatal(char *fmt, ...)
|
||||||
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
fprintf(stderr, "FATAL: ");
|
fprintf(stderr, "FATAL: ");
|
||||||
|
@ -34,22 +34,25 @@
|
|||||||
#include "WindowData.h"
|
#include "WindowData.h"
|
||||||
|
|
||||||
struct _WindowData {
|
struct _WindowData {
|
||||||
void *data;
|
void *data;
|
||||||
WindowDataHandler handler;
|
WindowDataHandler handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
WindowData *windowdata_new(void *data, WindowDataHandler handler) {
|
WindowData *windowdata_new(void *data, WindowDataHandler handler)
|
||||||
WindowData *wb= MEM_mallocN(sizeof(*wb), "windowdata_new");
|
{
|
||||||
wb->data= data;
|
WindowData *wb = MEM_mallocN(sizeof(*wb), "windowdata_new");
|
||||||
wb->handler= handler;
|
wb->data = data;
|
||||||
|
wb->handler = handler;
|
||||||
|
|
||||||
return wb;
|
return wb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void windowdata_handle(WindowData *wb, GHOST_EventHandle evt) {
|
void windowdata_handle(WindowData *wb, GHOST_EventHandle evt)
|
||||||
|
{
|
||||||
wb->handler(wb->data, evt);
|
wb->handler(wb->data, evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void windowdata_free(WindowData *wb) {
|
void windowdata_free(WindowData *wb)
|
||||||
|
{
|
||||||
MEM_freeN(wb);
|
MEM_freeN(wb);
|
||||||
}
|
}
|
||||||
|
@ -32,19 +32,19 @@
|
|||||||
/* ******************** GLOBAL VARIABLES ***************** */
|
/* ******************** GLOBAL VARIABLES ***************** */
|
||||||
|
|
||||||
|
|
||||||
char name[24]= "Blur";
|
char name[24] = "Blur";
|
||||||
|
|
||||||
/* structure for buttons,
|
/* structure for buttons,
|
||||||
* butcode name default min max 0
|
* butcode name default min max 0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
VarStruct varstr[]= {
|
VarStruct varstr[] = {
|
||||||
LABEL, "Input: 1 strip", 0.0, 0.0, 0.0, "",
|
LABEL, "Input: 1 strip", 0.0, 0.0, 0.0, "",
|
||||||
NUMSLI|FLO, "Blur", 0.5, 0.0, 10.0, "Maximum filtersize",
|
NUMSLI | FLO, "Blur", 0.5, 0.0, 10.0, "Maximum filtersize",
|
||||||
NUMSLI|FLO, "Gamma", 1.0, 0.4, 2.0, "Gamma correction",
|
NUMSLI | FLO, "Gamma", 1.0, 0.4, 2.0, "Gamma correction",
|
||||||
TOG|INT, "Animated", 0.0, 0.0, 1.0, "For (Ipo) animated blur",
|
TOG | INT, "Animated", 0.0, 0.0, 1.0, "For (Ipo) animated blur",
|
||||||
NUM|INT, "debug", 0.0, 0.0, 2.0,
|
NUM | INT, "debug", 0.0, 0.0, 2.0,
|
||||||
"0:off 1: show primary blur buffer 2: show 2nd blur buffer",
|
"0:off 1: show primary blur buffer 2: show 2nd blur buffer",
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ VarStruct varstr[]= {
|
|||||||
Varstr and Cast must have the same variables in the same order */
|
Varstr and Cast must have the same variables in the same order */
|
||||||
|
|
||||||
typedef struct Cast {
|
typedef struct Cast {
|
||||||
int dummy; /* because of the 'label' button */
|
int dummy; /* because of the 'label' button */
|
||||||
float blur;
|
float blur;
|
||||||
float gamma;
|
float gamma;
|
||||||
float use_ipo;
|
float use_ipo;
|
||||||
@ -83,15 +83,15 @@ void plugin_init(void)
|
|||||||
|
|
||||||
void plugin_getinfo(PluginInfo *info)
|
void plugin_getinfo(PluginInfo *info)
|
||||||
{
|
{
|
||||||
info->name= name;
|
info->name = name;
|
||||||
info->nvars= sizeof(varstr)/sizeof(VarStruct);
|
info->nvars = sizeof(varstr) / sizeof(VarStruct);
|
||||||
info->cfra= &cfra;
|
info->cfra = &cfra;
|
||||||
|
|
||||||
info->varstr= varstr;
|
info->varstr = varstr;
|
||||||
|
|
||||||
info->init= plugin_init;
|
info->init = plugin_init;
|
||||||
info->seq_doit= (SeqDoit) plugin_seq_doit;
|
info->seq_doit = (SeqDoit) plugin_seq_doit;
|
||||||
info->callback= plugin_but_changed;
|
info->callback = plugin_but_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -102,24 +102,24 @@ void blurbuf(struct ImBuf *ibuf, int nr, Cast *cast)
|
|||||||
struct ImBuf *tbuf, *ttbuf;
|
struct ImBuf *tbuf, *ttbuf;
|
||||||
int i, x4;
|
int i, x4;
|
||||||
|
|
||||||
tbuf= dupImBuf(ibuf);
|
tbuf = dupImBuf(ibuf);
|
||||||
x4= ibuf->x/4;
|
x4 = ibuf->x / 4;
|
||||||
|
|
||||||
/* This doesn't seem to work... paprmh */
|
/* This doesn't seem to work... paprmh */
|
||||||
if (cast->gamma != 1.0) gamwarp(tbuf, cast->gamma);
|
if (cast->gamma != 1.0) gamwarp(tbuf, cast->gamma);
|
||||||
|
|
||||||
/* reduce */
|
/* reduce */
|
||||||
for (i=0; i<nr; i++) {
|
for (i = 0; i < nr; i++) {
|
||||||
ttbuf = onehalf(tbuf);
|
ttbuf = onehalf(tbuf);
|
||||||
if (ttbuf) {
|
if (ttbuf) {
|
||||||
freeImBuf(tbuf);
|
freeImBuf(tbuf);
|
||||||
tbuf = ttbuf;
|
tbuf = ttbuf;
|
||||||
}
|
}
|
||||||
if (tbuf->x<4 || tbuf->y<4) break;
|
if (tbuf->x < 4 || tbuf->y < 4) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* enlarge */
|
/* enlarge */
|
||||||
for (i=0; i<nr; i++) {
|
for (i = 0; i < nr; i++) {
|
||||||
ttbuf = double_x(tbuf);
|
ttbuf = double_x(tbuf);
|
||||||
if (ttbuf) {
|
if (ttbuf) {
|
||||||
freeImBuf(tbuf);
|
freeImBuf(tbuf);
|
||||||
@ -139,10 +139,10 @@ void blurbuf(struct ImBuf *ibuf, int nr, Cast *cast)
|
|||||||
/* this doesn't seem to work...paprmh*/
|
/* this doesn't seem to work...paprmh*/
|
||||||
if (cast->gamma != 1.0) gamwarp(tbuf, 1.0 / cast->gamma);
|
if (cast->gamma != 1.0) gamwarp(tbuf, 1.0 / cast->gamma);
|
||||||
|
|
||||||
if (ibuf->rect)memcpy(ibuf->rect, tbuf->rect, 4*ibuf->x*ibuf->y);
|
if (ibuf->rect) memcpy(ibuf->rect, tbuf->rect, 4 * ibuf->x * ibuf->y);
|
||||||
|
|
||||||
if (ibuf->rect_float)
|
if (ibuf->rect_float)
|
||||||
memcpy(ibuf->rect_float, tbuf->rect_float, 4*ibuf->x*ibuf->y*sizeof(float));
|
memcpy(ibuf->rect_float, tbuf->rect_float, 4 * ibuf->x * ibuf->y * sizeof(float));
|
||||||
|
|
||||||
freeImBuf(tbuf);
|
freeImBuf(tbuf);
|
||||||
|
|
||||||
@ -161,79 +161,79 @@ void doblur(struct ImBuf *mbuf, float fac, Cast *cast)
|
|||||||
|
|
||||||
/* which buffers ? */
|
/* which buffers ? */
|
||||||
|
|
||||||
if (fac>7.0) fac= 7.0;
|
if (fac > 7.0) fac = 7.0;
|
||||||
if (fac<=1.0) return;
|
if (fac <= 1.0) return;
|
||||||
|
|
||||||
pfac= 2.0;
|
pfac = 2.0;
|
||||||
pbuf= dupImBuf(mbuf);
|
pbuf = dupImBuf(mbuf);
|
||||||
n= 1;
|
n = 1;
|
||||||
while (pfac < fac) {
|
while (pfac < fac) {
|
||||||
blurbuf(pbuf, n, cast);
|
blurbuf(pbuf, n, cast);
|
||||||
blurbuf(pbuf, n, cast);
|
blurbuf(pbuf, n, cast);
|
||||||
|
|
||||||
n++;
|
n++;
|
||||||
pfac+= 1.0;
|
pfac += 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ifac= pfac;
|
ifac = pfac;
|
||||||
pfac-= 1.0;
|
pfac -= 1.0;
|
||||||
|
|
||||||
ibuf= dupImBuf(pbuf);
|
ibuf = dupImBuf(pbuf);
|
||||||
blurbuf(ibuf, n, cast);
|
blurbuf(ibuf, n, cast);
|
||||||
blurbuf(ibuf, n, cast);
|
blurbuf(ibuf, n, cast);
|
||||||
|
|
||||||
fac= (fac-pfac)/(ifac-pfac);
|
fac = (fac - pfac) / (ifac - pfac);
|
||||||
n= mbuf->x*mbuf->y;
|
n = mbuf->x * mbuf->y;
|
||||||
|
|
||||||
if (cast->show) fac=cast->show-1;
|
if (cast->show) fac = cast->show - 1;
|
||||||
|
|
||||||
if (mbuf->rect_float){
|
if (mbuf->rect_float) {
|
||||||
if (fac>=1) {
|
if (fac >= 1) {
|
||||||
memcpy(mbuf->rect_float, ibuf->rect_float, 4*n*sizeof(float));
|
memcpy(mbuf->rect_float, ibuf->rect_float, 4 * n * sizeof(float));
|
||||||
}
|
}
|
||||||
else if(fac<=0) {
|
else if (fac <= 0) {
|
||||||
memcpy(mbuf->rect_float, pbuf->rect_float, 4*n*sizeof(float));
|
memcpy(mbuf->rect_float, pbuf->rect_float, 4 * n * sizeof(float));
|
||||||
}
|
}
|
||||||
else { /* interpolate */
|
else { /* interpolate */
|
||||||
infac= 1-fac;
|
infac = 1 - fac;
|
||||||
|
|
||||||
irectf= (float *)ibuf->rect_float;
|
irectf = (float *)ibuf->rect_float;
|
||||||
prectf= (float *)pbuf->rect_float;
|
prectf = (float *)pbuf->rect_float;
|
||||||
mrectf= (float *)mbuf->rect_float;
|
mrectf = (float *)mbuf->rect_float;
|
||||||
while (n--) {
|
while (n--) {
|
||||||
mrectf[0]= irectf[0]*fac+ prectf[0]*infac;
|
mrectf[0] = irectf[0] * fac + prectf[0] * infac;
|
||||||
mrectf[1]= irectf[1]*fac+ prectf[1]*infac;
|
mrectf[1] = irectf[1] * fac + prectf[1] * infac;
|
||||||
mrectf[2]= irectf[2]*fac+ prectf[2]*infac;
|
mrectf[2] = irectf[2] * fac + prectf[2] * infac;
|
||||||
mrectf[3]= irectf[3]*fac+ prectf[3]*infac;
|
mrectf[3] = irectf[3] * fac + prectf[3] * infac;
|
||||||
mrectf+= 4;
|
mrectf += 4;
|
||||||
irectf+= 4;
|
irectf += 4;
|
||||||
prectf+= 4;
|
prectf += 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(mbuf->rect){
|
else if (mbuf->rect) {
|
||||||
b1= (int)fac*255.0;
|
b1 = (int)fac * 255.0;
|
||||||
if (b1>255) b1= 255;
|
if (b1 > 255) b1 = 255;
|
||||||
b2= 255-b1;
|
b2 = 255 - b1;
|
||||||
|
|
||||||
if (b1==255) {
|
if (b1 == 255) {
|
||||||
memcpy(mbuf->rect, ibuf->rect, 4*n);
|
memcpy(mbuf->rect, ibuf->rect, 4 * n);
|
||||||
}
|
}
|
||||||
else if(b1==0) {
|
else if (b1 == 0) {
|
||||||
memcpy(mbuf->rect, pbuf->rect, 4*n);
|
memcpy(mbuf->rect, pbuf->rect, 4 * n);
|
||||||
}
|
}
|
||||||
else { /* interpolate */
|
else { /* interpolate */
|
||||||
irect= (char *)ibuf->rect;
|
irect = (char *)ibuf->rect;
|
||||||
prect= (char *)pbuf->rect;
|
prect = (char *)pbuf->rect;
|
||||||
mrect= (char *)mbuf->rect;
|
mrect = (char *)mbuf->rect;
|
||||||
while (n--) {
|
while (n--) {
|
||||||
mrect[0]= (irect[0]*b1+ prect[0]*b2)>>8;
|
mrect[0] = (irect[0] * b1 + prect[0] * b2) >> 8;
|
||||||
mrect[1]= (irect[1]*b1+ prect[1]*b2)>>8;
|
mrect[1] = (irect[1] * b1 + prect[1] * b2) >> 8;
|
||||||
mrect[2]= (irect[2]*b1+ prect[2]*b2)>>8;
|
mrect[2] = (irect[2] * b1 + prect[2] * b2) >> 8;
|
||||||
mrect[3]= (irect[3]*b1+ prect[3]*b2)>>8;
|
mrect[3] = (irect[3] * b1 + prect[3] * b2) >> 8;
|
||||||
mrect+= 4;
|
mrect += 4;
|
||||||
irect+= 4;
|
irect += 4;
|
||||||
prect+= 4;
|
prect += 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -245,18 +245,18 @@ void doblur(struct ImBuf *mbuf, float fac, Cast *cast)
|
|||||||
|
|
||||||
void plugin_seq_doit(Cast *cast, float facf0, float facf1, int x, int y, ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *out, ImBuf *use)
|
void plugin_seq_doit(Cast *cast, float facf0, float facf1, int x, int y, ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *out, ImBuf *use)
|
||||||
{
|
{
|
||||||
float bfacf0, bfacf1;
|
float bfacf0, bfacf1;
|
||||||
|
|
||||||
if (cast->use_ipo==0) {
|
if (cast->use_ipo == 0) {
|
||||||
bfacf0= bfacf1= cast->blur+1.0;
|
bfacf0 = bfacf1 = cast->blur + 1.0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
bfacf0 = (facf0 * 6.0) + 1.0;
|
bfacf0 = (facf0 * 6.0) + 1.0;
|
||||||
bfacf1 = (facf1 * 6.0) + 1.0;
|
bfacf1 = (facf1 * 6.0) + 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (out->rect) memcpy(out->rect, ibuf1->rect, 4*out->x*out->y);
|
if (out->rect) memcpy(out->rect, ibuf1->rect, 4 * out->x * out->y);
|
||||||
if (out->rect_float) memcpy(out->rect_float, ibuf1->rect_float, 4*out->x*out->y*sizeof(float));
|
if (out->rect_float) memcpy(out->rect_float, ibuf1->rect_float, 4 * out->x * out->y * sizeof(float));
|
||||||
|
|
||||||
/****************I can't get this field code to work... works ok without...paprmh****************/
|
/****************I can't get this field code to work... works ok without...paprmh****************/
|
||||||
|
|
||||||
@ -270,15 +270,15 @@ void plugin_seq_doit(Cast *cast, float facf0, float facf1, int x, int y, ImBuf *
|
|||||||
doblur(out, bfacf0, cast); /*fieldA*/
|
doblur(out, bfacf0, cast); /*fieldA*/
|
||||||
|
|
||||||
/* if (out->rect)out->rect += out->x * out->y;
|
/* if (out->rect)out->rect += out->x * out->y;
|
||||||
if (out->rect_float)out->rect_float += out->x * out->y;
|
if (out->rect_float)out->rect_float += out->x * out->y;
|
||||||
|
|
||||||
doblur(out, bfacf1, cast);*/ /*fieldB*/
|
doblur(out, bfacf1, cast);*/ /*fieldB*/
|
||||||
|
|
||||||
/* if (out->rect)out->rect -= out->x * out->y;
|
/* if (out->rect)out->rect -= out->x * out->y;
|
||||||
if (out->rect_float)out->rect_float -= out->x * out->y;
|
if (out->rect_float)out->rect_float -= out->x * out->y;
|
||||||
out->flags |= IB_fields;
|
out->flags |= IB_fields;
|
||||||
|
|
||||||
interlace(out);*/
|
interlace(out);*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,25 +31,25 @@
|
|||||||
/* ******************** GLOBAL VARIABLES ***************** */
|
/* ******************** GLOBAL VARIABLES ***************** */
|
||||||
|
|
||||||
|
|
||||||
char name[24]= "scatter";
|
char name[24] = "scatter";
|
||||||
|
|
||||||
/* structure for buttons,
|
/* structure for buttons,
|
||||||
* butcode name default min max 0
|
* butcode name default min max 0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
VarStruct varstr[]= {
|
VarStruct varstr[] = {
|
||||||
LABEL, "Input: 1 strip", 0.0, 0.0, 0.0, "",
|
LABEL, "Input: 1 strip", 0.0, 0.0, 0.0, "",
|
||||||
NUM|INT, "seed: ", 1.0, 0.0, 10.0, "Offset in random table",
|
NUM | INT, "seed: ", 1.0, 0.0, 10.0, "Offset in random table",
|
||||||
NUMSLI|FLO, "swing: ", 1.0, 0.0, 3.0, "The amplitude, width of the effect",
|
NUMSLI | FLO, "swing: ", 1.0, 0.0, 3.0, "The amplitude, width of the effect",
|
||||||
TOG|INT, "wrap", 0.0, 0.0, 1.0, "Cyclic wrap around the left/right edges",
|
TOG | INT, "wrap", 0.0, 0.0, 1.0, "Cyclic wrap around the left/right edges",
|
||||||
NUM|INT, "type: ", 1.0, 0.0, 1.0, "Type 1 is random for each frame",
|
NUM | INT, "type: ", 1.0, 0.0, 1.0, "Type 1 is random for each frame",
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The cast struct is for input in the main doit function
|
/* The cast struct is for input in the main doit function
|
||||||
Varstr and Cast must have the same variables in the same order */
|
Varstr and Cast must have the same variables in the same order */
|
||||||
|
|
||||||
typedef struct Cast {
|
typedef struct Cast {
|
||||||
int dummy; /* because of the 'label' button */
|
int dummy; /* because of the 'label' button */
|
||||||
int seed;
|
int seed;
|
||||||
float swing;
|
float swing;
|
||||||
int wrap;
|
int wrap;
|
||||||
@ -80,57 +80,57 @@ void plugin_init()
|
|||||||
|
|
||||||
void plugin_getinfo(PluginInfo *info)
|
void plugin_getinfo(PluginInfo *info)
|
||||||
{
|
{
|
||||||
info->name= name;
|
info->name = name;
|
||||||
info->nvars= sizeof(varstr)/sizeof(VarStruct);
|
info->nvars = sizeof(varstr) / sizeof(VarStruct);
|
||||||
info->cfra= &cfra;
|
info->cfra = &cfra;
|
||||||
|
|
||||||
info->varstr= varstr;
|
info->varstr = varstr;
|
||||||
|
|
||||||
info->init= plugin_init;
|
info->init = plugin_init;
|
||||||
info->seq_doit= (SeqDoit) plugin_seq_doit;
|
info->seq_doit = (SeqDoit) plugin_seq_doit;
|
||||||
info->callback= plugin_but_changed;
|
info->callback = plugin_but_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ************************************************************
|
/* ************************************************************
|
||||||
Scatter
|
Scatter
|
||||||
|
|
||||||
************************************************************ */
|
************************************************************ */
|
||||||
|
|
||||||
static void rectcpy(ImBuf *dbuf, ImBuf *sbuf,
|
static void rectcpy(ImBuf *dbuf, ImBuf *sbuf,
|
||||||
int destx, int desty,
|
int destx, int desty,
|
||||||
int srcx, int srcy, int width, int height)
|
int srcx, int srcy, int width, int height)
|
||||||
{
|
{
|
||||||
uint *drect,*srect;
|
uint *drect, *srect;
|
||||||
float *dfrect, *sfrect;
|
float *dfrect, *sfrect;
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
if (dbuf == 0) return;
|
if (dbuf == 0) return;
|
||||||
|
|
||||||
if (destx < 0){
|
if (destx < 0) {
|
||||||
srcx -= destx ;
|
srcx -= destx;
|
||||||
width += destx ;
|
width += destx;
|
||||||
destx = 0;
|
destx = 0;
|
||||||
}
|
}
|
||||||
if (srcx < 0){
|
if (srcx < 0) {
|
||||||
destx -= srcx ;
|
destx -= srcx;
|
||||||
width += destx ;
|
width += destx;
|
||||||
srcx = 0;
|
srcx = 0;
|
||||||
}
|
}
|
||||||
if (desty < 0){
|
if (desty < 0) {
|
||||||
srcy -= desty ;
|
srcy -= desty;
|
||||||
height += desty ;
|
height += desty;
|
||||||
desty = 0;
|
desty = 0;
|
||||||
}
|
}
|
||||||
if (srcy < 0){
|
if (srcy < 0) {
|
||||||
desty -= srcy ;
|
desty -= srcy;
|
||||||
height += desty ;
|
height += desty;
|
||||||
srcy = 0;
|
srcy = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (width > dbuf->x - destx) width = dbuf->x - destx;
|
if (width > dbuf->x - destx) width = dbuf->x - destx;
|
||||||
if (height > dbuf->y - desty) height = dbuf->y - desty;
|
if (height > dbuf->y - desty) height = dbuf->y - desty;
|
||||||
if (sbuf){
|
if (sbuf) {
|
||||||
if (width > sbuf->x - srcx) width = sbuf->x - srcx;
|
if (width > sbuf->x - srcx) width = sbuf->x - srcx;
|
||||||
if (height > sbuf->y - srcy) height = sbuf->y - srcy;
|
if (height > sbuf->y - srcy) height = sbuf->y - srcy;
|
||||||
srect = sbuf->rect;
|
srect = sbuf->rect;
|
||||||
@ -151,23 +151,25 @@ static void rectcpy(ImBuf *dbuf, ImBuf *sbuf,
|
|||||||
destx = dbuf->x;
|
destx = dbuf->x;
|
||||||
|
|
||||||
if (sbuf) {
|
if (sbuf) {
|
||||||
tmp = (srcy * sbuf->x + srcx );
|
tmp = (srcy * sbuf->x + srcx);
|
||||||
if (dbuf->rect_float) sfrect += 4 * tmp;
|
if (dbuf->rect_float) sfrect += 4 * tmp;
|
||||||
else srect += tmp;
|
else srect += tmp;
|
||||||
srcx = sbuf->x;
|
srcx = sbuf->x;
|
||||||
} else{
|
}
|
||||||
|
else {
|
||||||
if (dbuf->rect_float) sfrect = dfrect;
|
if (dbuf->rect_float) sfrect = dfrect;
|
||||||
else srect = drect;
|
else srect = drect;
|
||||||
srcx = destx;
|
srcx = destx;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (;height > 0; height--){
|
for (; height > 0; height--) {
|
||||||
if (dbuf->rect_float) {
|
if (dbuf->rect_float) {
|
||||||
memcpy(dfrect,sfrect, 4 * width * sizeof(float));
|
memcpy(dfrect, sfrect, 4 * width * sizeof(float));
|
||||||
dfrect += destx;
|
dfrect += destx;
|
||||||
sfrect += srcx;
|
sfrect += srcx;
|
||||||
} else {
|
}
|
||||||
memcpy(drect,srect, width * sizeof(int));
|
else {
|
||||||
|
memcpy(drect, srect, width * sizeof(int));
|
||||||
drect += destx;
|
drect += destx;
|
||||||
srect += srcx;
|
srect += srcx;
|
||||||
}
|
}
|
||||||
@ -176,21 +178,22 @@ static void rectcpy(ImBuf *dbuf, ImBuf *sbuf,
|
|||||||
|
|
||||||
static void fill_out(ImBuf *out, float r, float g, float b, float a)
|
static void fill_out(ImBuf *out, float r, float g, float b, float a)
|
||||||
{
|
{
|
||||||
int tot,x;
|
int tot, x;
|
||||||
float *rectf = out->rect_float;
|
float *rectf = out->rect_float;
|
||||||
unsigned char *rect = (unsigned char *)out->rect;
|
unsigned char *rect = (unsigned char *)out->rect;
|
||||||
|
|
||||||
tot = out->x * out->y;
|
tot = out->x * out->y;
|
||||||
if (out->rect_float) {
|
if (out->rect_float) {
|
||||||
for (x = 0;x < tot; x++) {
|
for (x = 0; x < tot; x++) {
|
||||||
rectf[0] = r;
|
rectf[0] = r;
|
||||||
rectf[1] = g;
|
rectf[1] = g;
|
||||||
rectf[2] = b;
|
rectf[2] = b;
|
||||||
rectf[3] = a;
|
rectf[3] = a;
|
||||||
rectf += 4;
|
rectf += 4;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
for (x=0;x < tot;x++) {
|
else {
|
||||||
|
for (x = 0; x < tot; x++) {
|
||||||
rect[0] = (int)(r * 255);
|
rect[0] = (int)(r * 255);
|
||||||
rect[1] = (int)(g * 255);
|
rect[1] = (int)(g * 255);
|
||||||
rect[2] = (int)(b * 255);
|
rect[2] = (int)(b * 255);
|
||||||
@ -207,7 +210,7 @@ void plugin_seq_doit(Cast *cast, float facf0, float facf1, int sx, int sy, ImBuf
|
|||||||
int x, y, lr;
|
int x, y, lr;
|
||||||
|
|
||||||
/* fill imbuf 'out' with black */
|
/* fill imbuf 'out' with black */
|
||||||
fill_out(out, 0,0,0,0);
|
fill_out(out, 0, 0, 0, 0);
|
||||||
|
|
||||||
|
|
||||||
switch (cast->type) {
|
switch (cast->type) {
|
||||||
@ -228,9 +231,10 @@ void plugin_seq_doit(Cast *cast, float facf0, float facf1, int sx, int sy, ImBuf
|
|||||||
f1 = cast->swing * f1;
|
f1 = cast->swing * f1;
|
||||||
f2 = cast->swing * f2;
|
f2 = cast->swing * f2;
|
||||||
if (cast->wrap) f2 += 1.0;
|
if (cast->wrap) f2 += 1.0;
|
||||||
lr = drand48()>0.5;
|
lr = drand48() > 0.5;
|
||||||
t1 = facf0;
|
t1 = facf0;
|
||||||
} else t1 = facf1;
|
}
|
||||||
|
else t1 = facf1;
|
||||||
|
|
||||||
t2 = 1.0 - t1;
|
t2 = 1.0 - t1;
|
||||||
t3 = 3.0 * (f1 * t1 * t1 * t2 + f2 * t1 * t2 * t2);
|
t3 = 3.0 * (f1 * t1 * t1 * t2 + f2 * t1 * t2 * t2);
|
||||||
|
Loading…
Reference in New Issue
Block a user