style cleanup

This commit is contained in:
Campbell Barton 2012-05-24 13:18:53 +00:00
parent 39ff86eb32
commit 9abd6e7651
9 changed files with 787 additions and 742 deletions

@ -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();
} }
@ -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,8 +287,8 @@ 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);
@ -304,13 +304,12 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
*/ */
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;
} }
} }
@ -321,7 +320,7 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
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:
@ -356,8 +355,7 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
FALSE /* stereo flag */); FALSE /* stereo flag */);
} }
else else {
{
GHOST_EndFullScreen(shSystem); GHOST_EndFullScreen(shSystem);
sFullScreenWindow = 0; sFullScreenWindow = 0;
} }
@ -380,8 +378,7 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
{ {
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;
} }
@ -391,7 +388,7 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
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);
@ -414,8 +411,7 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
{ {
sExitRequested = 1; sExitRequested = 1;
} }
else else {
{
if (sGearsTimer) if (sGearsTimer)
{ {
GHOST_RemoveTimer(shSystem, sGearsTimer); GHOST_RemoveTimer(shSystem, sGearsTimer);
@ -451,10 +447,10 @@ int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData)
} }
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 */
@ -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]);
} }

@ -46,11 +46,11 @@
# include "BMF_Api.h" # include "BMF_Api.h"
#else #else
# include "BLF_api.h" # include "BLF_api.h"
extern int datatoc_bfont_ttf_size; extern int datatoc_bfont_ttf_size;
extern char datatoc_bfont_ttf[]; extern char datatoc_bfont_ttf[];
/* cheat */ /* cheat */
char U[1024]= {0}; char U[1024] = {0};
#endif #endif
#include "Util.h" #include "Util.h"
@ -76,47 +76,47 @@ void multitestapp_exit(MultiTestApp *app);
/**/ /**/
void rect_bevel_side(int rect[2][2], int side, float *lt, float *dk, float *col, int width) { void rect_bevel_side(int rect[2][2], int side, float *lt, float *dk, float *col, int width) {
int ltidx= (side/2)%4; int ltidx = (side / 2) % 4;
int dkidx= (ltidx + 1 + (side&1))%4; int dkidx = (ltidx + 1 + (side & 1)) % 4;
int i, corner; int i, corner;
glBegin(GL_LINES); glBegin(GL_LINES);
for (i=0; i<width; i++) { for (i = 0; i < width; i++) {
float ltf= pow(lt[i], 1.0/2.2), dkf= pow(dk[i], 1.0/2.2); float ltf = pow(lt[i], 1.0 / 2.2), dkf = pow(dk[i], 1.0 / 2.2);
float stf= (dkidx>ltidx)?dkf:ltf; float stf = (dkidx > ltidx) ? dkf : ltf;
int lx= rect[1][0]-i-1; int lx = rect[1][0] - i - 1;
int ly= rect[0][1]+i; int ly = rect[0][1] + i;
glColor3f(col[0]*stf, col[1]*stf, col[2]*stf); glColor3f(col[0] * stf, col[1] * stf, col[2] * stf);
for (corner=0; corner<4; corner++) { for (corner = 0; corner < 4; corner++) {
int x= (corner==0 || corner==1)?(rect[0][0]+i):(rect[1][0]-i-1); int x = (corner == 0 || corner == 1) ? (rect[0][0] + i) : (rect[1][0] - i - 1);
int y= (corner==0 || corner==3)?(rect[0][1]+i):(rect[1][1]-i-1); int y = (corner == 0 || corner == 3) ? (rect[0][1] + i) : (rect[1][1] - i - 1);
if (ltidx==corner) if (ltidx == corner)
glColor3f(col[0]*ltf, col[1]*ltf, col[2]*ltf); glColor3f(col[0] * ltf, col[1] * ltf, col[2] * ltf);
if (dkidx==corner) if (dkidx == corner)
glColor3f(col[0]*dkf, col[1]*dkf, col[2]*dkf); glColor3f(col[0] * dkf, col[1] * dkf, col[2] * dkf);
glVertex2i(lx, ly); glVertex2i(lx, ly);
glVertex2i(lx= x, ly= y); glVertex2i(lx = x, ly = y);
} }
} }
glEnd(); glEnd();
glColor3fv(col); glColor3fv(col);
glRecti(rect[0][0]+width, rect[0][1]+width, rect[1][0]-width, rect[1][1]-width); glRecti(rect[0][0] + width, rect[0][1] + width, rect[1][0] - width, rect[1][1] - width);
} }
void rect_bevel_smooth(int rect[2][2], int width) { void rect_bevel_smooth(int rect[2][2], int width) {
float *lt= malloc(sizeof(*lt)*width); float *lt = malloc(sizeof(*lt) * width);
float *dk= malloc(sizeof(*dk)*width); float *dk = malloc(sizeof(*dk) * width);
float col[4]; float col[4];
int i; int i;
for (i=0; i<width; i++) { for (i = 0; i < width; i++) {
float v= width-1?((float) i/(width-1)):0; float v = width - 1 ? ((float) i / (width - 1)) : 0;
lt[i]= 1.2 + (1.0-1.2)*v; lt[i] = 1.2 + (1.0 - 1.2) * v;
dk[i]= 0.2 + (1.0-0.2)*v; dk[i] = 0.2 + (1.0 - 0.2) * v;
} }
glGetFloatv(GL_CURRENT_COLOR, col); glGetFloatv(GL_CURRENT_COLOR, col);
@ -127,7 +127,7 @@ void rect_bevel_smooth(int rect[2][2], int width) {
free(dk); free(dk);
} }
/* /*
* MainWindow * MainWindow
*/ */
@ -152,24 +152,25 @@ static void mainwindow_do_draw(MainWindow *mw) {
if (mw->lmbut[0]) { if (mw->lmbut[0]) {
glClearColor(0.5, 0.5, 0.5, 1); glClearColor(0.5, 0.5, 0.5, 1);
} else { }
else {
glClearColor(1, 1, 1, 1); glClearColor(1, 1, 1, 1);
} }
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.5, 0.6, 0.8); glColor3f(0.5, 0.6, 0.8);
glRecti(mw->tmouse[0]-5, mw->tmouse[1]-5, mw->tmouse[0]+5, mw->tmouse[1]+5); glRecti(mw->tmouse[0] - 5, mw->tmouse[1] - 5, mw->tmouse[0] + 5, mw->tmouse[1] + 5);
GHOST_SwapWindowBuffers(mw->win); GHOST_SwapWindowBuffers(mw->win);
} }
static void mainwindow_do_reshape(MainWindow *mw) { static void mainwindow_do_reshape(MainWindow *mw) {
GHOST_RectangleHandle bounds= GHOST_GetClientBounds(mw->win); GHOST_RectangleHandle bounds = GHOST_GetClientBounds(mw->win);
GHOST_ActivateWindowDrawingContext(mw->win); GHOST_ActivateWindowDrawingContext(mw->win);
mw->size[0]= GHOST_GetWidthRectangle(bounds); mw->size[0] = GHOST_GetWidthRectangle(bounds);
mw->size[1]= GHOST_GetHeightRectangle(bounds); mw->size[1] = GHOST_GetHeightRectangle(bounds);
glViewport(0, 0, mw->size[0], mw->size[1]); glViewport(0, 0, mw->size[0], mw->size[1]);
@ -183,10 +184,10 @@ static void mainwindow_do_reshape(MainWindow *mw) {
} }
static void mainwindow_do_key(MainWindow *mw, GHOST_TKey key, int press) { static void mainwindow_do_key(MainWindow *mw, GHOST_TKey key, int press) {
switch(key) { switch (key) {
case GHOST_kKeyC: case GHOST_kKeyC:
if (press) if (press)
GHOST_SetCursorShape(mw->win, (GHOST_TStandardCursor) (rand()%(GHOST_kStandardCursorNumCursors))); GHOST_SetCursorShape(mw->win, (GHOST_TStandardCursor) (rand() % (GHOST_kStandardCursorNumCursors)));
break; break;
case GHOST_kKeyLeftBracket: case GHOST_kKeyLeftBracket:
if (press) if (press)
@ -213,7 +214,7 @@ static void mainwindow_do_key(MainWindow *mw, GHOST_TKey key, int press) {
int i; int i;
mainwindow_log(mw, "Invalidating window 10 times"); mainwindow_log(mw, "Invalidating window 10 times");
for (i=0; i<10; i++) for (i = 0; i < 10; i++)
GHOST_InvalidateWindow(mw->win); GHOST_InvalidateWindow(mw->win);
} }
break; break;
@ -226,29 +227,31 @@ static void mainwindow_do_key(MainWindow *mw, GHOST_TKey key, int press) {
} }
static void mainwindow_do_move(MainWindow *mw, int x, int y) { static void mainwindow_do_move(MainWindow *mw, int x, int y) {
mw->lmouse[0]= x, mw->lmouse[1]= y; mw->lmouse[0] = x, mw->lmouse[1] = y;
if (mw->lmbut[0]) { if (mw->lmbut[0]) {
mw->tmouse[0]= x, mw->tmouse[1]= y; mw->tmouse[0] = x, mw->tmouse[1] = y;
GHOST_InvalidateWindow(mw->win); GHOST_InvalidateWindow(mw->win);
} }
} }
static void mainwindow_do_button(MainWindow *mw, int which, int press) { static void mainwindow_do_button(MainWindow *mw, int which, int press) {
if (which==GHOST_kButtonMaskLeft) { if (which == GHOST_kButtonMaskLeft) {
mw->lmbut[0]= press; mw->lmbut[0] = press;
mw->tmouse[0]= mw->lmouse[0], mw->tmouse[1]= mw->lmouse[1]; mw->tmouse[0] = mw->lmouse[0], mw->tmouse[1] = mw->lmouse[1];
GHOST_InvalidateWindow(mw->win); GHOST_InvalidateWindow(mw->win);
} else if (which==GHOST_kButtonMaskLeft) { }
mw->lmbut[1]= press; else if (which == GHOST_kButtonMaskLeft) {
} else if (which==GHOST_kButtonMaskLeft) { mw->lmbut[1] = press;
mw->lmbut[2]= press; }
else if (which == GHOST_kButtonMaskLeft) {
mw->lmbut[2] = press;
} }
} }
static void mainwindow_handle(void *priv, GHOST_EventHandle evt) { static void mainwindow_handle(void *priv, GHOST_EventHandle evt) {
MainWindow *mw= priv; MainWindow *mw = priv;
GHOST_TEventType type= GHOST_GetEventType(evt); GHOST_TEventType type = GHOST_GetEventType(evt);
char buf[256]; char buf[256];
event_to_buf(evt, buf); event_to_buf(evt, buf);
@ -256,21 +259,21 @@ static void mainwindow_handle(void *priv, GHOST_EventHandle evt) {
switch (type) { switch (type) {
case GHOST_kEventCursorMove: { case GHOST_kEventCursorMove: {
GHOST_TEventCursorData *cd= GHOST_GetEventData(evt); GHOST_TEventCursorData *cd = GHOST_GetEventData(evt);
int x, y; int x, y;
GHOST_ScreenToClient(mw->win, cd->x, cd->y, &x, &y); GHOST_ScreenToClient(mw->win, cd->x, cd->y, &x, &y);
mainwindow_do_move(mw, x, mw->size[1]-y-1); mainwindow_do_move(mw, x, mw->size[1] - y - 1);
break; break;
} }
case GHOST_kEventButtonDown: case GHOST_kEventButtonDown:
case GHOST_kEventButtonUp: { case GHOST_kEventButtonUp: {
GHOST_TEventButtonData *bd= GHOST_GetEventData(evt); GHOST_TEventButtonData *bd = GHOST_GetEventData(evt);
mainwindow_do_button(mw, bd->button, (type == GHOST_kEventButtonDown)); mainwindow_do_button(mw, bd->button, (type == GHOST_kEventButtonDown));
break; break;
} }
case GHOST_kEventKeyDown: case GHOST_kEventKeyDown:
case GHOST_kEventKeyUp: { case GHOST_kEventKeyUp: {
GHOST_TEventKeyData *kd= GHOST_GetEventData(evt); GHOST_TEventKeyData *kd = GHOST_GetEventData(evt);
mainwindow_do_key(mw, kd->key, (type == GHOST_kEventKeyDown)); mainwindow_do_key(mw, kd->key, (type == GHOST_kEventKeyDown));
break; break;
} }
@ -287,45 +290,46 @@ static void mainwindow_handle(void *priv, GHOST_EventHandle evt) {
/**/ /**/
static void mainwindow_timer_proc(GHOST_TimerTaskHandle task, GHOST_TUns64 time) { static void mainwindow_timer_proc(GHOST_TimerTaskHandle task, GHOST_TUns64 time) {
MainWindow *mw= GHOST_GetTimerTaskUserData(task); MainWindow *mw = GHOST_GetTimerTaskUserData(task);
char buf[64]; char buf[64];
sprintf(buf, "timer: %6.2f", (double) ((GHOST_TInt64) time)/1000); sprintf(buf, "timer: %6.2f", (double) ((GHOST_TInt64) time) / 1000);
mainwindow_log(mw, buf); mainwindow_log(mw, buf);
} }
MainWindow *mainwindow_new(MultiTestApp *app) { MainWindow *mainwindow_new(MultiTestApp *app) {
GHOST_SystemHandle sys= multitestapp_get_system(app); GHOST_SystemHandle sys = multitestapp_get_system(app);
GHOST_WindowHandle win; GHOST_WindowHandle win;
win= GHOST_CreateWindow(sys, "MultiTest:Main", 40, 40, 400, 400, win = GHOST_CreateWindow(sys, "MultiTest:Main", 40, 40, 400, 400,
GHOST_kWindowStateNormal, GHOST_kDrawingContextTypeOpenGL, GHOST_kWindowStateNormal, GHOST_kDrawingContextTypeOpenGL,
FALSE, FALSE); FALSE, FALSE);
if (win) { if (win) {
MainWindow *mw= MEM_callocN(sizeof(*mw), "mainwindow_new"); MainWindow *mw = MEM_callocN(sizeof(*mw), "mainwindow_new");
mw->app= app; mw->app = app;
mw->win= win; mw->win = win;
GHOST_SetWindowUserData(mw->win, windowdata_new(mw, mainwindow_handle)); GHOST_SetWindowUserData(mw->win, windowdata_new(mw, mainwindow_handle));
GHOST_InstallTimer(sys, 1000, 10000, mainwindow_timer_proc, mw); GHOST_InstallTimer(sys, 1000, 10000, mainwindow_timer_proc, mw);
return mw; return mw;
} else { }
else {
return NULL; return NULL;
} }
} }
void mainwindow_free(MainWindow *mw) { void mainwindow_free(MainWindow *mw) {
GHOST_SystemHandle sys= multitestapp_get_system(mw->app); GHOST_SystemHandle sys = multitestapp_get_system(mw->app);
windowdata_free(GHOST_GetWindowUserData(mw->win)); windowdata_free(GHOST_GetWindowUserData(mw->win));
GHOST_DisposeWindow(sys, mw->win); GHOST_DisposeWindow(sys, mw->win);
MEM_freeN(mw); MEM_freeN(mw);
} }
/* /*
* LoggerWindow * LoggerWindow
*/ */
@ -361,19 +365,19 @@ struct _LoggerWindow {
static void loggerwindow_recalc_regions(LoggerWindow *lw) { static void loggerwindow_recalc_regions(LoggerWindow *lw) {
int nscroll[2][2]; int nscroll[2][2];
nscroll[0][0]= SCROLLBAR_PAD; nscroll[0][0] = SCROLLBAR_PAD;
nscroll[0][1]= SCROLLBAR_PAD; nscroll[0][1] = SCROLLBAR_PAD;
nscroll[1][0]= nscroll[0][0] + SCROLLBAR_WIDTH; nscroll[1][0] = nscroll[0][0] + SCROLLBAR_WIDTH;
nscroll[1][1]= lw->size[1] - SCROLLBAR_PAD - 1; nscroll[1][1] = lw->size[1] - SCROLLBAR_PAD - 1;
lw->textarea[0][0]= nscroll[1][0] + TEXTAREA_PAD; lw->textarea[0][0] = nscroll[1][0] + TEXTAREA_PAD;
lw->textarea[0][1]= TEXTAREA_PAD; lw->textarea[0][1] = TEXTAREA_PAD;
lw->textarea[1][0]= lw->size[0] - TEXTAREA_PAD - 1; lw->textarea[1][0] = lw->size[0] - TEXTAREA_PAD - 1;
lw->textarea[1][1]= lw->size[1] - TEXTAREA_PAD - 1; lw->textarea[1][1] = lw->size[1] - TEXTAREA_PAD - 1;
lw->ndisplines= (lw->textarea[1][1]-lw->textarea[0][1])/lw->fontheight; lw->ndisplines = (lw->textarea[1][1] - lw->textarea[0][1]) / lw->fontheight;
scrollbar_set_thumbpct(lw->scroll, (float) lw->ndisplines/lw->nloglines); scrollbar_set_thumbpct(lw->scroll, (float) lw->ndisplines / lw->nloglines);
scrollbar_set_rect(lw->scroll, nscroll); scrollbar_set_rect(lw->scroll, nscroll);
} }
@ -390,12 +394,12 @@ static void loggerwindow_setup_window_gl(LoggerWindow *lw) {
} }
static void loggerwindow_do_reshape(LoggerWindow *lw) { static void loggerwindow_do_reshape(LoggerWindow *lw) {
GHOST_RectangleHandle bounds= GHOST_GetClientBounds(lw->win); GHOST_RectangleHandle bounds = GHOST_GetClientBounds(lw->win);
GHOST_ActivateWindowDrawingContext(lw->win); GHOST_ActivateWindowDrawingContext(lw->win);
lw->size[0]= GHOST_GetWidthRectangle(bounds); lw->size[0] = GHOST_GetWidthRectangle(bounds);
lw->size[1]= GHOST_GetHeightRectangle(bounds); lw->size[1] = GHOST_GetHeightRectangle(bounds);
loggerwindow_recalc_regions(lw); loggerwindow_recalc_regions(lw);
loggerwindow_setup_window_gl(lw); loggerwindow_setup_window_gl(lw);
@ -421,15 +425,16 @@ static void loggerwindow_do_draw(LoggerWindow *lw) {
if (scrollbar_is_scrolling(lw->scroll)) { if (scrollbar_is_scrolling(lw->scroll)) {
glColor3f(0.6, 0.7, 0.5); glColor3f(0.6, 0.7, 0.5);
} else { }
else {
glColor3f(0.9, 0.9, 0.92); glColor3f(0.9, 0.9, 0.92);
} }
rect_bevel_smooth(sb_thumb, 1); rect_bevel_smooth(sb_thumb, 1);
startline= scrollbar_get_thumbpos(lw->scroll)*(lw->nloglines-1); startline = scrollbar_get_thumbpos(lw->scroll) * (lw->nloglines - 1);
ndisplines= min_i(lw->ndisplines, lw->nloglines-startline); ndisplines = min_i(lw->ndisplines, lw->nloglines - startline);
if (lw->fonttexid!=-1) { if (lw->fonttexid != -1) {
glBindTexture(GL_TEXTURE_2D, lw->fonttexid); glBindTexture(GL_TEXTURE_2D, lw->fonttexid);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@ -437,17 +442,18 @@ static void loggerwindow_do_draw(LoggerWindow *lw) {
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
} }
glColor3f(0, 0, 0); glColor3f(0, 0, 0);
for (i=0; i<ndisplines; i++) { for (i = 0; i < ndisplines; i++) {
/* stored in reverse order */ /* stored in reverse order */
char *line= lw->loglines[(lw->nloglines-1)-(i+startline)]; char *line = lw->loglines[(lw->nloglines - 1) - (i + startline)];
int x_pos= lw->textarea[0][0] + 4; int x_pos = lw->textarea[0][0] + 4;
int y_pos= lw->textarea[0][1] + 4 + i*lw->fontheight; int y_pos = lw->textarea[0][1] + 4 + i * lw->fontheight;
#ifdef USE_BMF #ifdef USE_BMF
if (lw->fonttexid==-1) { if (lw->fonttexid == -1) {
glRasterPos2i(x_pos, y_pos); glRasterPos2i(x_pos, y_pos);
BMF_DrawString(lw->font, line); BMF_DrawString(lw->font, line);
} else { }
else {
BMF_DrawStringTexture(lw->font, line, x_pos, y_pos, 0.0); BMF_DrawStringTexture(lw->font, line, x_pos, y_pos, 0.0);
} }
#else #else
@ -457,7 +463,7 @@ static void loggerwindow_do_draw(LoggerWindow *lw) {
} }
#ifdef USE_BMF #ifdef USE_BMF
if (lw->fonttexid!=-1) { if (lw->fonttexid != -1) {
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND); glDisable(GL_BLEND);
} }
@ -467,7 +473,7 @@ static void loggerwindow_do_draw(LoggerWindow *lw) {
} }
static void loggerwindow_do_move(LoggerWindow *lw, int x, int y) { static void loggerwindow_do_move(LoggerWindow *lw, int x, int y) {
lw->lmouse[0]= x, lw->lmouse[1]= y; lw->lmouse[0] = x, lw->lmouse[1] = y;
if (scrollbar_is_scrolling(lw->scroll)) { if (scrollbar_is_scrolling(lw->scroll)) {
scrollbar_keep_scrolling(lw->scroll, y); scrollbar_keep_scrolling(lw->scroll, y);
@ -476,8 +482,8 @@ static void loggerwindow_do_move(LoggerWindow *lw, int x, int y) {
} }
static void loggerwindow_do_button(LoggerWindow *lw, int which, int press) { static void loggerwindow_do_button(LoggerWindow *lw, int which, int press) {
if (which==GHOST_kButtonMaskLeft) { if (which == GHOST_kButtonMaskLeft) {
lw->lmbut[0]= press; lw->lmbut[0] = press;
if (press) { if (press) {
if (scrollbar_contains_pt(lw->scroll, lw->lmouse)) { if (scrollbar_contains_pt(lw->scroll, lw->lmouse)) {
@ -485,17 +491,20 @@ static void loggerwindow_do_button(LoggerWindow *lw, int which, int press) {
GHOST_SetCursorShape(lw->win, GHOST_kStandardCursorUpDown); GHOST_SetCursorShape(lw->win, GHOST_kStandardCursorUpDown);
GHOST_InvalidateWindow(lw->win); GHOST_InvalidateWindow(lw->win);
} }
} else { }
else {
if (scrollbar_is_scrolling(lw->scroll)) { if (scrollbar_is_scrolling(lw->scroll)) {
scrollbar_stop_scrolling(lw->scroll); scrollbar_stop_scrolling(lw->scroll);
GHOST_SetCursorShape(lw->win, GHOST_kStandardCursorDefault); GHOST_SetCursorShape(lw->win, GHOST_kStandardCursorDefault);
GHOST_InvalidateWindow(lw->win); GHOST_InvalidateWindow(lw->win);
} }
} }
} else if (which==GHOST_kButtonMaskMiddle) { }
lw->lmbut[1]= press; else if (which == GHOST_kButtonMaskMiddle) {
} else if (which==GHOST_kButtonMaskRight) { lw->lmbut[1] = press;
lw->lmbut[2]= press; }
else if (which == GHOST_kButtonMaskRight) {
lw->lmbut[2] = press;
} }
} }
@ -509,26 +518,26 @@ static void loggerwindow_do_key(LoggerWindow *lw, GHOST_TKey key, int press) {
} }
static void loggerwindow_handle(void *priv, GHOST_EventHandle evt) { static void loggerwindow_handle(void *priv, GHOST_EventHandle evt) {
LoggerWindow *lw= priv; LoggerWindow *lw = priv;
GHOST_TEventType type= GHOST_GetEventType(evt); GHOST_TEventType type = GHOST_GetEventType(evt);
switch(type) { switch (type) {
case GHOST_kEventCursorMove: { case GHOST_kEventCursorMove: {
GHOST_TEventCursorData *cd= GHOST_GetEventData(evt); GHOST_TEventCursorData *cd = GHOST_GetEventData(evt);
int x, y; int x, y;
GHOST_ScreenToClient(lw->win, cd->x, cd->y, &x, &y); GHOST_ScreenToClient(lw->win, cd->x, cd->y, &x, &y);
loggerwindow_do_move(lw, x, lw->size[1]-y-1); loggerwindow_do_move(lw, x, lw->size[1] - y - 1);
break; break;
} }
case GHOST_kEventButtonDown: case GHOST_kEventButtonDown:
case GHOST_kEventButtonUp: { case GHOST_kEventButtonUp: {
GHOST_TEventButtonData *bd= GHOST_GetEventData(evt); GHOST_TEventButtonData *bd = GHOST_GetEventData(evt);
loggerwindow_do_button(lw, bd->button, (type == GHOST_kEventButtonDown)); loggerwindow_do_button(lw, bd->button, (type == GHOST_kEventButtonDown));
break; break;
} }
case GHOST_kEventKeyDown: case GHOST_kEventKeyDown:
case GHOST_kEventKeyUp: { case GHOST_kEventKeyUp: {
GHOST_TEventKeyData *kd= GHOST_GetEventData(evt); GHOST_TEventKeyData *kd = GHOST_GetEventData(evt);
loggerwindow_do_key(lw, kd->key, (type == GHOST_kEventKeyDown)); loggerwindow_do_key(lw, kd->key, (type == GHOST_kEventKeyDown));
break; break;
} }
@ -545,64 +554,65 @@ static void loggerwindow_handle(void *priv, GHOST_EventHandle evt) {
/**/ /**/
LoggerWindow *loggerwindow_new(MultiTestApp *app) { LoggerWindow *loggerwindow_new(MultiTestApp *app) {
GHOST_SystemHandle sys= multitestapp_get_system(app); GHOST_SystemHandle sys = multitestapp_get_system(app);
GHOST_TUns32 screensize[2]; GHOST_TUns32 screensize[2];
GHOST_WindowHandle win; GHOST_WindowHandle win;
GHOST_GetMainDisplayDimensions(sys, &screensize[0], &screensize[1]); GHOST_GetMainDisplayDimensions(sys, &screensize[0], &screensize[1]);
win= GHOST_CreateWindow(sys, "MultiTest:Logger", 40, screensize[1]-432, win = GHOST_CreateWindow(sys, "MultiTest:Logger", 40, screensize[1] - 432,
800, 300, GHOST_kWindowStateNormal, 800, 300, GHOST_kWindowStateNormal,
GHOST_kDrawingContextTypeOpenGL, FALSE, FALSE); GHOST_kDrawingContextTypeOpenGL, FALSE, FALSE);
if (win) { if (win) {
LoggerWindow *lw= MEM_callocN(sizeof(*lw), "loggerwindow_new"); LoggerWindow *lw = MEM_callocN(sizeof(*lw), "loggerwindow_new");
int bbox[2][2]; int bbox[2][2];
lw->app= app; lw->app = app;
lw->win= win; lw->win = win;
#ifdef USE_BMF #ifdef USE_BMF
lw->font= BMF_GetFont(BMF_kScreen12); lw->font = BMF_GetFont(BMF_kScreen12);
lw->fonttexid= BMF_GetFontTexture(lw->font); lw->fonttexid = BMF_GetFontTexture(lw->font);
BMF_GetBoundingBox(lw->font, &bbox[0][0], &bbox[0][1], &bbox[1][0], &bbox[1][1]); BMF_GetBoundingBox(lw->font, &bbox[0][0], &bbox[0][1], &bbox[1][0], &bbox[1][1]);
lw->fontheight= rect_height(bbox); lw->fontheight = rect_height(bbox);
#else #else
lw->font= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size); lw->font = BLF_load_mem("default", (unsigned char *)datatoc_bfont_ttf, datatoc_bfont_ttf_size);
BLF_size(lw->font, 11, 72); BLF_size(lw->font, 11, 72);
lw->fontheight= BLF_height(lw->font, "A_"); lw->fontheight = BLF_height(lw->font, "A_");
#endif #endif
lw->nloglines= lw->logsize= 0; lw->nloglines = lw->logsize = 0;
lw->loglines= MEM_mallocN(sizeof(*lw->loglines)*lw->nloglines, "loglines"); lw->loglines = MEM_mallocN(sizeof(*lw->loglines) * lw->nloglines, "loglines");
lw->scroll= scrollbar_new(2, 40); lw->scroll = scrollbar_new(2, 40);
GHOST_SetWindowUserData(lw->win, windowdata_new(lw, loggerwindow_handle)); GHOST_SetWindowUserData(lw->win, windowdata_new(lw, loggerwindow_handle));
loggerwindow_do_reshape(lw); loggerwindow_do_reshape(lw);
return lw; return lw;
} else { }
else {
return NULL; return NULL;
} }
} }
void loggerwindow_log(LoggerWindow *lw, char *line) { void loggerwindow_log(LoggerWindow *lw, char *line) {
if (lw->nloglines==lw->logsize) { if (lw->nloglines == lw->logsize) {
lw->loglines= memdbl(lw->loglines, &lw->logsize, sizeof(*lw->loglines)); lw->loglines = memdbl(lw->loglines, &lw->logsize, sizeof(*lw->loglines));
} }
lw->loglines[lw->nloglines++]= string_dup(line); lw->loglines[lw->nloglines++] = string_dup(line);
scrollbar_set_thumbpct(lw->scroll, (float) lw->ndisplines/lw->nloglines); scrollbar_set_thumbpct(lw->scroll, (float) lw->ndisplines / lw->nloglines);
GHOST_InvalidateWindow(lw->win); GHOST_InvalidateWindow(lw->win);
} }
void loggerwindow_free(LoggerWindow *lw) { void loggerwindow_free(LoggerWindow *lw) {
GHOST_SystemHandle sys= multitestapp_get_system(lw->app); GHOST_SystemHandle sys = multitestapp_get_system(lw->app);
int i; int i;
for (i=0; i<lw->nloglines; i++) { for (i = 0; i < lw->nloglines; i++) {
MEM_freeN(lw->loglines[i]); MEM_freeN(lw->loglines[i]);
} }
MEM_freeN(lw->loglines); MEM_freeN(lw->loglines);
@ -612,7 +622,7 @@ void loggerwindow_free(LoggerWindow *lw) {
MEM_freeN(lw); MEM_freeN(lw);
} }
/* /*
* ExtraWindow * ExtraWindow
*/ */
@ -632,18 +642,18 @@ static void extrawindow_do_draw(ExtraWindow *ew) {
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.8, 0.8, 0.8); glColor3f(0.8, 0.8, 0.8);
glRecti(10, 10, ew->size[0]-10, ew->size[1]-10); glRecti(10, 10, ew->size[0] - 10, ew->size[1] - 10);
GHOST_SwapWindowBuffers(ew->win); GHOST_SwapWindowBuffers(ew->win);
} }
static void extrawindow_do_reshape(ExtraWindow *ew) { static void extrawindow_do_reshape(ExtraWindow *ew) {
GHOST_RectangleHandle bounds= GHOST_GetClientBounds(ew->win); GHOST_RectangleHandle bounds = GHOST_GetClientBounds(ew->win);
GHOST_ActivateWindowDrawingContext(ew->win); GHOST_ActivateWindowDrawingContext(ew->win);
ew->size[0]= GHOST_GetWidthRectangle(bounds); ew->size[0] = GHOST_GetWidthRectangle(bounds);
ew->size[1]= GHOST_GetHeightRectangle(bounds); ew->size[1] = GHOST_GetHeightRectangle(bounds);
glViewport(0, 0, ew->size[0], ew->size[1]); glViewport(0, 0, ew->size[0], ew->size[1]);
@ -668,8 +678,8 @@ static void extrawindow_do_key(ExtraWindow *ew, GHOST_TKey key, int press) {
static void extrawindow_spin_cursor(ExtraWindow *ew, GHOST_TUns64 time) { static void extrawindow_spin_cursor(ExtraWindow *ew, GHOST_TUns64 time) {
GHOST_TUns8 bitmap[16][2]; GHOST_TUns8 bitmap[16][2];
GHOST_TUns8 mask[16][2]; GHOST_TUns8 mask[16][2];
double ftime= (double) ((GHOST_TInt64) time)/1000; double ftime = (double) ((GHOST_TInt64) time) / 1000;
float angle= fmod(ftime, 1.0) * 3.1415*2; float angle = fmod(ftime, 1.0) * 3.1415 * 2;
int i; int i;
memset(&bitmap, 0, sizeof(bitmap)); memset(&bitmap, 0, sizeof(bitmap));
@ -680,26 +690,26 @@ static void extrawindow_spin_cursor(ExtraWindow *ew, GHOST_TUns64 time) {
bitmap[2][0] |= mask[2][0] |= 0xF; bitmap[2][0] |= mask[2][0] |= 0xF;
bitmap[3][0] |= mask[3][0] |= 0xF; bitmap[3][0] |= mask[3][0] |= 0xF;
for (i=0; i<7; i++) { for (i = 0; i < 7; i++) {
int x = 7 + cos(angle)*i; int x = 7 + cos(angle) * i;
int y = 7 + sin(angle)*i; int y = 7 + sin(angle) * i;
mask[y][x/8] |= (1 << (x%8)); mask[y][x / 8] |= (1 << (x % 8));
} }
for (i=0; i<64; i++) { for (i = 0; i < 64; i++) {
float v= (i/63.0) * 3.1415*2; float v = (i / 63.0) * 3.1415 * 2;
int x = 7 + cos(v)*7; int x = 7 + cos(v) * 7;
int y = 7 + sin(v)*7; int y = 7 + sin(v) * 7;
mask[y][x/8] |= (1 << (x%8)); mask[y][x / 8] |= (1 << (x % 8));
} }
GHOST_SetCustomCursorShape(ew->win, bitmap, mask, 0, 0); GHOST_SetCustomCursorShape(ew->win, bitmap, mask, 0, 0);
} }
static void extrawindow_handle(void *priv, GHOST_EventHandle evt) { static void extrawindow_handle(void *priv, GHOST_EventHandle evt) {
ExtraWindow *ew= priv; ExtraWindow *ew = priv;
GHOST_TEventType type= GHOST_GetEventType(evt); GHOST_TEventType type = GHOST_GetEventType(evt);
char buf[256]; char buf[256];
event_to_buf(evt, buf); event_to_buf(evt, buf);
@ -708,7 +718,7 @@ static void extrawindow_handle(void *priv, GHOST_EventHandle evt) {
switch (type) { switch (type) {
case GHOST_kEventKeyDown: case GHOST_kEventKeyDown:
case GHOST_kEventKeyUp: { case GHOST_kEventKeyUp: {
GHOST_TEventKeyData *kd= GHOST_GetEventData(evt); GHOST_TEventKeyData *kd = GHOST_GetEventData(evt);
extrawindow_do_key(ew, kd->key, (type == GHOST_kEventKeyDown)); extrawindow_do_key(ew, kd->key, (type == GHOST_kEventKeyDown));
break; break;
} }
@ -733,35 +743,36 @@ static void extrawindow_handle(void *priv, GHOST_EventHandle evt) {
/**/ /**/
ExtraWindow *extrawindow_new(MultiTestApp *app) { ExtraWindow *extrawindow_new(MultiTestApp *app) {
GHOST_SystemHandle sys= multitestapp_get_system(app); GHOST_SystemHandle sys = multitestapp_get_system(app);
GHOST_WindowHandle win; GHOST_WindowHandle win;
win= GHOST_CreateWindow(sys, "MultiTest:Extra", 500, 40, 400, 400, win = GHOST_CreateWindow(sys, "MultiTest:Extra", 500, 40, 400, 400,
GHOST_kWindowStateNormal, GHOST_kDrawingContextTypeOpenGL, GHOST_kWindowStateNormal, GHOST_kDrawingContextTypeOpenGL,
FALSE, FALSE); FALSE, FALSE);
if (win) { if (win) {
ExtraWindow *ew= MEM_callocN(sizeof(*ew), "mainwindow_new"); ExtraWindow *ew = MEM_callocN(sizeof(*ew), "mainwindow_new");
ew->app= app; ew->app = app;
ew->win= win; ew->win = win;
GHOST_SetWindowUserData(ew->win, windowdata_new(ew, extrawindow_handle)); GHOST_SetWindowUserData(ew->win, windowdata_new(ew, extrawindow_handle));
return ew; return ew;
} else { }
else {
return NULL; return NULL;
} }
} }
void extrawindow_free(ExtraWindow *ew) { void extrawindow_free(ExtraWindow *ew) {
GHOST_SystemHandle sys= multitestapp_get_system(ew->app); GHOST_SystemHandle sys = multitestapp_get_system(ew->app);
windowdata_free(GHOST_GetWindowUserData(ew->win)); windowdata_free(GHOST_GetWindowUserData(ew->win));
GHOST_DisposeWindow(sys, ew->win); GHOST_DisposeWindow(sys, ew->win);
MEM_freeN(ew); MEM_freeN(ew);
} }
/* /*
* MultiTestApp * MultiTestApp
*/ */
@ -775,28 +786,29 @@ struct _MultiTestApp {
}; };
static int multitest_event_handler(GHOST_EventHandle evt, GHOST_TUserDataPtr data) { static int multitest_event_handler(GHOST_EventHandle evt, GHOST_TUserDataPtr data) {
MultiTestApp *app= data; MultiTestApp *app = data;
GHOST_WindowHandle win; GHOST_WindowHandle win;
win= GHOST_GetEventWindow(evt); win = GHOST_GetEventWindow(evt);
if (win && !GHOST_ValidWindow(app->sys, win)) { if (win && !GHOST_ValidWindow(app->sys, win)) {
loggerwindow_log(app->logger, "WARNING: bad event, non-valid window\n"); loggerwindow_log(app->logger, "WARNING: bad event, non-valid window\n");
return 1; return 1;
} }
if (win) { if (win) {
WindowData *wb= GHOST_GetWindowUserData(win); WindowData *wb = GHOST_GetWindowUserData(win);
windowdata_handle(wb, evt); windowdata_handle(wb, evt);
} else { }
GHOST_TEventType type= GHOST_GetEventType(evt); else {
GHOST_TEventType type = GHOST_GetEventType(evt);
/* GHOST_kEventQuit are the only 'system' events, /* GHOST_kEventQuit are the only 'system' events,
* that is, events without a window. * that is, events without a window.
*/ */
switch(type) { switch (type) {
case GHOST_kEventQuit: case GHOST_kEventQuit:
app->exit= 1; app->exit = 1;
break; break;
default: default:
@ -811,26 +823,26 @@ static int multitest_event_handler(GHOST_EventHandle evt, GHOST_TUserDataPtr dat
/**/ /**/
MultiTestApp *multitestapp_new(void) { MultiTestApp *multitestapp_new(void) {
MultiTestApp *app= MEM_mallocN(sizeof(*app), "multitestapp_new"); MultiTestApp *app = MEM_mallocN(sizeof(*app), "multitestapp_new");
GHOST_EventConsumerHandle consumer= GHOST_CreateEventConsumer(multitest_event_handler, app); GHOST_EventConsumerHandle consumer = GHOST_CreateEventConsumer(multitest_event_handler, app);
app->sys= GHOST_CreateSystem(); app->sys = GHOST_CreateSystem();
if (!app->sys) if (!app->sys)
fatal("Unable to create ghost system"); fatal("Unable to create ghost system");
if (!GHOST_AddEventConsumer(app->sys, consumer)) if (!GHOST_AddEventConsumer(app->sys, consumer))
fatal("Unable to add multitest event consumer "); fatal("Unable to add multitest event consumer ");
app->main= mainwindow_new(app); app->main = mainwindow_new(app);
if (!app->main) if (!app->main)
fatal("Unable to create main window"); fatal("Unable to create main window");
app->logger= loggerwindow_new(app); app->logger = loggerwindow_new(app);
if (!app->logger) if (!app->logger)
fatal("Unable to create logger window"); fatal("Unable to create logger window");
app->extra= NULL; app->extra = NULL;
app->exit= 0; app->exit = 0;
return app; return app;
} }
@ -845,19 +857,20 @@ GHOST_SystemHandle multitestapp_get_system(MultiTestApp *app) {
void multitestapp_free_extrawindow(MultiTestApp *app) { void multitestapp_free_extrawindow(MultiTestApp *app) {
extrawindow_free(app->extra); extrawindow_free(app->extra);
app->extra= NULL; app->extra = NULL;
} }
void multitestapp_toggle_extra_window(MultiTestApp *app) { void multitestapp_toggle_extra_window(MultiTestApp *app) {
if (app->extra) { if (app->extra) {
multitestapp_free_extrawindow(app); multitestapp_free_extrawindow(app);
} else { }
app->extra= extrawindow_new(app); else {
app->extra = extrawindow_new(app);
} }
} }
void multitestapp_exit(MultiTestApp *app) { void multitestapp_exit(MultiTestApp *app) {
app->exit= 1; app->exit = 1;
} }
void multitestapp_run(MultiTestApp *app) { void multitestapp_run(MultiTestApp *app) {
@ -874,14 +887,14 @@ void multitestapp_free(MultiTestApp *app) {
MEM_freeN(app); MEM_freeN(app);
} }
/***/ /***/
int main(int argc, char **argv) { int main(int argc, char **argv) {
#ifndef USE_BMF #ifndef USE_BMF
BLF_init(11, 72); BLF_init(11, 72);
#endif #endif
MultiTestApp *app= multitestapp_new(); MultiTestApp *app = multitestapp_new();
multitestapp_run(app); multitestapp_run(app);
multitestapp_free(app); multitestapp_free(app);

@ -45,97 +45,114 @@ struct _ScrollBar {
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: ");

@ -38,18 +38,21 @@ struct _WindowData {
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,18 +32,18 @@
/* ******************** 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",
}; };
@ -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;
} }
} }
} }
@ -247,16 +247,16 @@ void plugin_seq_doit(Cast *cast, float facf0, float facf1, int x, int y, ImBuf *
{ {
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****************/

@ -31,18 +31,18 @@
/* ******************** 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
@ -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);