ButMode.cpp (pymol-open-source-2.2.0) | : | ButMode.cpp (pymol-open-source-2.3.0) | ||
---|---|---|---|---|
skipping to change at line 41 | skipping to change at line 41 | |||
#include "Text.h" | #include "Text.h" | |||
#include "Menu.h" | #include "Menu.h" | |||
#include "CGO.h" | #include "CGO.h" | |||
#include "Movie.h" | #include "Movie.h" | |||
#define cButModeLineHeight DIP2PIXEL(12) | #define cButModeLineHeight DIP2PIXEL(12) | |||
#define cButModeLeftMargin DIP2PIXEL(2) | #define cButModeLeftMargin DIP2PIXEL(2) | |||
#define cButModeTopMargin DIP2PIXEL(1) | #define cButModeTopMargin DIP2PIXEL(1) | |||
#define cButModeBottomMargin DIP2PIXEL(2) | #define cButModeBottomMargin DIP2PIXEL(2) | |||
struct _CButMode { | struct CButMode : public Block { | |||
::Block *Block; | CodeType Code[cButModeCount + 1] {}; | |||
CodeType Code[cButModeCount + 1]; | int NCode {}; | |||
int NCode; | int Mode[cButModeInputCount] {}; | |||
int Mode[cButModeInputCount]; | int NBut {}; | |||
int NBut; | float Rate { 0.0f }; | |||
float Rate; | float RateShown { 0.0f }; | |||
float RateShown; | float Samples { 0.0f }, Delay { 0.0f }; | |||
float Samples, Delay; | float TextColor1[3] = { 0.5f, 0.5f, 1.0f }; | |||
float TextColor1[3]; | float TextColor2[3] = { 0.8f, 0.8f, 0.8f }; | |||
float TextColor2[3]; | float TextColor3[3] = { 1.0f, 0.5f, 0.5f }; | |||
float TextColor3[3]; | int DeferCnt { 0 }; | |||
int DeferCnt; | float DeferTime { 0.0f }; | |||
float DeferTime; | ||||
CButMode(PyMOLGlobals * G) : Block(G) {} | ||||
int click(int button, int x, int y, int mod) override; | ||||
void draw(CGO *orthoCGO) override; | ||||
bool fastDraw(CGO* orthoCGO) override; | ||||
}; | }; | |||
/*========================================================================*/ | /*========================================================================*/ | |||
Block *ButModeGetBlock(PyMOLGlobals * G) | Block *ButModeGetBlock(PyMOLGlobals * G) | |||
{ | { | |||
CButMode *I = G->ButMode; | CButMode *I = G->ButMode; | |||
{ | { | |||
return (I->Block); | return (I); | |||
} | } | |||
} | } | |||
int ButModeGetHeight(PyMOLGlobals * G) | int ButModeGetHeight(PyMOLGlobals * G) | |||
{ | { | |||
if(SettingGetGlobal_b(G, cSetting_mouse_grid)) | if(SettingGetGlobal_b(G, cSetting_mouse_grid)) | |||
return DIP2PIXEL(124); | return DIP2PIXEL(124); | |||
else | else | |||
return DIP2PIXEL(40); | return DIP2PIXEL(40); | |||
} | } | |||
skipping to change at line 134 | skipping to change at line 139 | |||
CButMode *I = G->ButMode; | CButMode *I = G->ButMode; | |||
I->Samples = 0.0; | I->Samples = 0.0; | |||
I->Rate = 0.0; | I->Rate = 0.0; | |||
I->RateShown = 0; | I->RateShown = 0; | |||
I->Delay = 0; | I->Delay = 0; | |||
} | } | |||
/*========================================================================*/ | /*========================================================================*/ | |||
void ButModeFree(PyMOLGlobals * G) | void ButModeFree(PyMOLGlobals * G) | |||
{ | { | |||
CButMode *I = G->ButMode; | DeleteP(G->ButMode); | |||
OrthoFreeBlock(G, I->Block); | ||||
FreeP(G->ButMode); | ||||
} | } | |||
/*========================================================================*/ | /*========================================================================*/ | |||
static int ButModeClick(Block * block, int button, int x, int y, int mod) | int CButMode::click(int button, int x, int y, int mod) | |||
{ | { | |||
PyMOLGlobals *G = block->G; | int dy = (y - rect.bottom) / cButModeLineHeight; | |||
int dy = (y - block->rect.bottom) / cButModeLineHeight; | ||||
// int dx = (x - block->rect.left); | // int dx = (x - block->rect.left); | |||
int forward = 1; | int forward = 1; | |||
// TAKEN OUT : BB 12/11 : Mouse position should not have | // TAKEN OUT : BB 12/11 : Mouse position should not have | |||
// an effect on whether the mouse ring goes forwards or | // an effect on whether the mouse ring goes forwards or | |||
// backwards. | // backwards. | |||
// forward = (dx > ((block->rect.right - block->rect.left) / 2)); | // forward = (dx > ((block->rect.right - block->rect.left) / 2)); | |||
// | // | |||
/* register CButMode *I=block->G->ButMode; */ | /* register CButMode *I=block->G->ButMode; */ | |||
if(button == P_GLUT_BUTTON_SCROLL_BACKWARD || button == P_GLUT_RIGHT_BUTTON) | if(button == P_GLUT_BUTTON_SCROLL_BACKWARD || button == P_GLUT_RIGHT_BUTTON) | |||
forward = !forward; | forward = !forward; | |||
if(mod == cOrthoSHIFT) | if(mod == cOrthoSHIFT) | |||
forward = !forward; | forward = !forward; | |||
if(dy < 2) { | if(dy < 2) { | |||
if(ButModeTranslate(G, P_GLUT_SINGLE_LEFT, 0) != cButModePickAtom) { | if(ButModeTranslate(m_G, P_GLUT_SINGLE_LEFT, 0) != cButModePickAtom) { | |||
if(!forward) { | if(!forward) { | |||
PLog(G, "cmd.mouse('select_backward')", cPLog_pym); | PLog(m_G, "cmd.mouse('select_backward')", cPLog_pym); | |||
OrthoCommandIn(G, "mouse select_backward,quiet=1"); | OrthoCommandIn(m_G, "mouse select_backward,quiet=1"); | |||
} else { | } else { | |||
PLog(G, "cmd.mouse('select_forward')", cPLog_pym); | PLog(m_G, "cmd.mouse('select_forward')", cPLog_pym); | |||
OrthoCommandIn(G, "mouse select_forward,quiet=1"); | OrthoCommandIn(m_G, "mouse select_forward,quiet=1"); | |||
} | } | |||
} | } | |||
} else { | } else { | |||
if(button == P_GLUT_RIGHT_BUTTON) { | if(button == P_GLUT_RIGHT_BUTTON) { | |||
MenuActivate0Arg(G,x,y,x,y,false,"mouse_config"); | MenuActivate0Arg(m_G,x,y,x,y,false,"mouse_config"); | |||
} else { | } else { | |||
if(!forward) { | if(!forward) { | |||
PLog(G, "cmd.mouse('backward')", cPLog_pym); | PLog(m_G, "cmd.mouse('backward')", cPLog_pym); | |||
OrthoCommandIn(G, "mouse backward,quiet=1"); | OrthoCommandIn(m_G, "mouse backward,quiet=1"); | |||
} else { | } else { | |||
PLog(G, "cmd.mouse('forward')", cPLog_pym); | PLog(m_G, "cmd.mouse('forward')", cPLog_pym); | |||
OrthoCommandIn(G, "mouse forward,quiet=1"); | OrthoCommandIn(m_G, "mouse forward,quiet=1"); | |||
} | } | |||
} | } | |||
} | } | |||
return (1); | return (1); | |||
} | } | |||
short ButModeDrawFastImpl(Block * block, short definitely ORTHOCGOARG); | static bool ButModeDrawFastImpl(Block * block, short definitely ORTHOCGOARG); | |||
/*========================================================================*/ | /*========================================================================*/ | |||
static void ButModeDraw(Block * block ORTHOCGOARG) | void CButMode::draw(CGO* orthoCGO) | |||
{ | { | |||
PyMOLGlobals *G = block->G; | ||||
CButMode *I = G->ButMode; | ||||
int x, y, a; | int x, y, a; | |||
int mode; | int mode; | |||
float *textColor = I->Block->TextColor; | const float *textColor = TextColor; | |||
float *textColor2 = I->TextColor2; | const float *textColor2 = TextColor2; | |||
CButMode *I = this; // TODO: Remove during ButMode refactor | ||||
#define BLANK_STR " " | #define BLANK_STR " " | |||
if(G->HaveGUI && G->ValidContext && ((block->rect.right - block->rect.left) > | if(m_G->HaveGUI && m_G->ValidContext && ((rect.right - rect.left) > 6)) { | |||
6)) { | if(SettingGetGlobal_b(m_G, cSetting_internal_gui_mode) == 0) { | |||
if(SettingGetGlobal_b(G, cSetting_internal_gui_mode) == 0) { | ||||
if (orthoCGO) | if (orthoCGO) | |||
CGOColorv(orthoCGO, I->Block->BackColor); | CGOColorv(orthoCGO, BackColor); | |||
#ifndef PURE_OPENGL_ES_2 | #ifndef PURE_OPENGL_ES_2 | |||
else | else | |||
glColor3fv(I->Block->BackColor); | glColor3fv(BackColor); | |||
#endif | #endif | |||
BlockFill(I->Block ORTHOCGOARGVAR); | fill(orthoCGO); | |||
BlockDrawLeftEdge(I->Block ORTHOCGOARGVAR); | drawLeftEdge(orthoCGO); | |||
} else { | } else { | |||
BlockDrawLeftEdge(I->Block ORTHOCGOARGVAR); | drawLeftEdge(orthoCGO); | |||
if (orthoCGO) | if (orthoCGO) | |||
CGOColor(orthoCGO, .5f, .5f, .5f); | CGOColor(orthoCGO, .5f, .5f, .5f); | |||
#ifndef PURE_OPENGL_ES_2 | #ifndef PURE_OPENGL_ES_2 | |||
else | else | |||
glColor3f(0.5, 0.5, 0.5); | glColor3f(0.5, 0.5, 0.5); | |||
#endif | #endif | |||
BlockDrawTopEdge(I->Block); | drawTopEdge(); | |||
textColor2 = OrthoGetOverlayColor(G); | textColor2 = OrthoGetOverlayColor(m_G); | |||
textColor = textColor2; | textColor = textColor2; | |||
} | } | |||
x = I->Block->rect.left + cButModeLeftMargin; | x = rect.left + cButModeLeftMargin; | |||
y = (I->Block->rect.top - cButModeLineHeight) - cButModeTopMargin; | y = (rect.top - cButModeLineHeight) - cButModeTopMargin; | |||
TextSetColor(G, textColor); | TextSetColor(m_G, textColor); | |||
TextDrawStrAt(G, "Mouse Mode ", x + 1, y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Mouse Mode ", x + 1, y ORTHOCGOARGVAR); | |||
TextSetColor(G, I->TextColor3); | TextSetColor(m_G, TextColor3); | |||
TextDrawStrAt(G, SettingGetGlobal_s(G, cSetting_button_mode_name), x + DIP2P | TextDrawStrAt(m_G, SettingGetGlobal_s(m_G, cSetting_button_mode_name), x + D | |||
IXEL(88), y ORTHOCGOARGVAR); | IP2PIXEL(88), y ORTHOCGOARGVAR); | |||
/* TextDrawStrAt(G,"2-Bttn Selecting",x+88,y); */ | /* TextDrawStrAt(m_G,"2-Bttn Selecting",x+88,y); */ | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
if(SettingGetGlobal_b(G, cSetting_mouse_grid)) { | if(SettingGetGlobal_b(m_G, cSetting_mouse_grid)) { | |||
TextSetColor(G, I->TextColor3); | TextSetColor(m_G, TextColor3); | |||
TextDrawStrAt(G, "Buttons", x + DIP2PIXEL(6), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Buttons", x + DIP2PIXEL(6), y ORTHOCGOARGVAR); | |||
TextSetColor(G, I->TextColor1); | TextSetColor(m_G, TextColor1); | |||
/* TextDrawStrAt(G," Left Mddl Rght Scrl",x+48,y); */ | /* TextDrawStrAt(m_G," Left Mddl Rght Scrl",x+48,y); */ | |||
TextDrawStrAt(G, " L M R Wheel", x + DIP2PIXEL(43), y ORTHOCGOAR | TextDrawStrAt(m_G, " L M R Wheel", x + DIP2PIXEL(43), y ORTHOCGO | |||
GVAR); | ARGVAR); | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
/* glColor3fv(I->Block->TextColor); | /* glColor3fv(I->Block->TextColor); | |||
TextDrawStrAt(G,"K",x,y-4); */ | TextDrawStrAt(m_G,"K",x,y-4); */ | |||
TextSetColor(G, I->TextColor3); | TextSetColor(m_G, TextColor3); | |||
TextDrawStrAt(G, "&", x + DIP2PIXEL(12), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "&", x + DIP2PIXEL(12), y ORTHOCGOARGVAR); | |||
TextDrawStrAt(G, "Keys", x + DIP2PIXEL(24), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Keys", x + DIP2PIXEL(24), y ORTHOCGOARGVAR); | |||
TextSetColor(G, textColor2); | TextSetColor(m_G, textColor2); | |||
TextSetPos2i(G, x + DIP2PIXEL(64), y); | TextSetPos2i(m_G, x + DIP2PIXEL(64), y); | |||
for(a = 0; a < 3; a++) { | for(a = 0; a < 3; a++) { | |||
mode = I->Mode[a]; | mode = Mode[a]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
} | } | |||
mode = I->Mode[12]; | mode = Mode[12]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
/* TextSetColor(G,I->Block->TextColor); | /* TextSetColor(m_G,I->Block->TextColor); | |||
TextDrawStrAt(G,"e",x+5,y-1); */ | TextDrawStrAt(m_G,"e",x+5,y-1); */ | |||
TextSetColor(G, I->TextColor1); | TextSetColor(m_G, TextColor1); | |||
TextSetColor(G, I->TextColor1); | TextSetColor(m_G, TextColor1); | |||
TextDrawStrAt(G, "Shft ", x + DIP2PIXEL(24), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Shft ", x + DIP2PIXEL(24), y ORTHOCGOARGVAR); | |||
TextSetColor(G, textColor2); | TextSetColor(m_G, textColor2); | |||
TextSetPos2i(G, x + DIP2PIXEL(64), y); | TextSetPos2i(m_G, x + DIP2PIXEL(64), y); | |||
for(a = 3; a < 6; a++) { | for(a = 3; a < 6; a++) { | |||
mode = I->Mode[a]; | mode = I->Mode[a]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
} | } | |||
mode = I->Mode[13]; | mode = Mode[13]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
/* glColor3fv(I->Block->TextColor); | /* glColor3fv(I->Block->TextColor); | |||
TextDrawStrAt(G,"y",x+10,y+2); */ | TextDrawStrAt(m_G,"y",x+10,y+2); */ | |||
TextSetColor(G, I->TextColor1); | TextSetColor(m_G, TextColor1); | |||
TextDrawStrAt(G, "Ctrl ", x + DIP2PIXEL(24), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Ctrl ", x + DIP2PIXEL(24), y ORTHOCGOARGVAR); | |||
TextSetColor(G, textColor2); | TextSetColor(m_G, textColor2); | |||
TextSetPos2i(G, x + DIP2PIXEL(64), y); | TextSetPos2i(m_G, x + DIP2PIXEL(64), y); | |||
for(a = 6; a < 9; a++) { | for(a = 6; a < 9; a++) { | |||
mode = I->Mode[a]; | mode = I->Mode[a]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
} | } | |||
mode = I->Mode[14]; | mode = I->Mode[14]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
/* glColor3fv(I->Block->TextColor); | /* glColor3fv(I->Block->TextColor); | |||
TextDrawStrAt(G,"s",x+15,y+3); */ | TextDrawStrAt(m_G,"s",x+15,y+3); */ | |||
TextSetColor(G, I->TextColor1); | TextSetColor(m_G, TextColor1); | |||
TextSetColor(G, I->TextColor1); | TextSetColor(m_G, TextColor1); | |||
TextDrawStrAt(G, "CtSh ", x + DIP2PIXEL(24), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "CtSh ", x + DIP2PIXEL(24), y ORTHOCGOARGVAR); | |||
TextSetColor(G, textColor2); | TextSetColor(m_G, textColor2); | |||
TextSetPos2i(G, x + DIP2PIXEL(64), y); | TextSetPos2i(m_G, x + DIP2PIXEL(64), y); | |||
for(a = 9; a < 12; a++) { | for(a = 9; a < 12; a++) { | |||
mode = I->Mode[a]; | mode = Mode[a]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
} | } | |||
mode = I->Mode[15]; | mode = Mode[15]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
TextSetColor(G, I->Block->TextColor); | TextSetColor(m_G, TextColor); | |||
TextSetColor(G, I->TextColor1); | TextSetColor(m_G, TextColor1); | |||
TextDrawStrAt(G, " SnglClk", x - DIP2PIXEL(8), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, " SnglClk", x - DIP2PIXEL(8), y ORTHOCGOARGVAR); | |||
TextSetColor(G, textColor2); | TextSetColor(m_G, textColor2); | |||
TextSetPos2i(G, x + DIP2PIXEL(64), y); | TextSetPos2i(m_G, x + DIP2PIXEL(64), y); | |||
for(a = 19; a < 22; a++) { | for(a = 19; a < 22; a++) { | |||
mode = I->Mode[a]; | mode = Mode[a]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
} | } | |||
TextSetColor(G, I->Block->TextColor); | TextSetColor(m_G, TextColor); | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
TextSetColor(G, I->Block->TextColor); | TextSetColor(m_G, TextColor); | |||
TextSetColor(G, I->TextColor1); | TextSetColor(m_G, TextColor1); | |||
TextDrawStrAt(G, " DblClk", x, y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, " DblClk", x, y ORTHOCGOARGVAR); | |||
TextSetColor(G, textColor2); | TextSetColor(m_G, textColor2); | |||
TextSetPos2i(G, x + DIP2PIXEL(64), y); | TextSetPos2i(m_G, x + DIP2PIXEL(64), y); | |||
for(a = 16; a < 19; a++) { | for(a = 16; a < 19; a++) { | |||
mode = I->Mode[a]; | mode = I->Mode[a]; | |||
if(mode < 0) | if(mode < 0) | |||
TextDrawStr(G, BLANK_STR ORTHOCGOARGVAR); | TextDrawStr(m_G, BLANK_STR ORTHOCGOARGVAR); | |||
else | else | |||
TextDrawStr(G, I->Code[mode] ORTHOCGOARGVAR); | TextDrawStr(m_G, Code[mode] ORTHOCGOARGVAR); | |||
} | } | |||
TextSetColor(G, I->Block->TextColor); | TextSetColor(m_G, TextColor); | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
} | } | |||
{ | { | |||
TextSetColor(G, textColor); | TextSetColor(m_G, textColor); | |||
if(ButModeTranslate(G, P_GLUT_SINGLE_LEFT, 0) == cButModePickAtom) { | if(ButModeTranslate(m_G, P_GLUT_SINGLE_LEFT, 0) == cButModePickAtom) { | |||
TextDrawStrAt(G, "Picking ", x, y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Picking ", x, y ORTHOCGOARGVAR); | |||
TextSetColor(G, I->TextColor3); | TextSetColor(m_G, TextColor3); | |||
TextDrawStrAt(G, "Atoms (and Joints)", x + DIP2PIXEL(64), y ORTHOCGOARGV | TextDrawStrAt(m_G, "Atoms (and Joints)", x + DIP2PIXEL(64), y ORTHOCGOAR | |||
AR); | GVAR); | |||
} else { | } else { | |||
TextDrawStrAt(G, "Selecting ", x, y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Selecting ", x, y ORTHOCGOARGVAR); | |||
TextSetColor(G, I->TextColor3); | TextSetColor(m_G, TextColor3); | |||
switch (SettingGetGlobal_i(G, cSetting_mouse_selection_mode)) { | switch (SettingGetGlobal_i(m_G, cSetting_mouse_selection_mode)) { | |||
case 0: | case 0: | |||
TextDrawStrAt(G, "Atoms", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Atoms", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | |||
break; | break; | |||
case 1: | case 1: | |||
TextDrawStrAt(G, "Residues", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Residues", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | |||
break; | break; | |||
case 2: | case 2: | |||
TextDrawStrAt(G, "Chains", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Chains", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | |||
break; | break; | |||
case 3: | case 3: | |||
TextDrawStrAt(G, "Segments", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Segments", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | |||
break; | break; | |||
case 4: | case 4: | |||
TextDrawStrAt(G, "Objects", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Objects", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | |||
break; | break; | |||
case 5: | case 5: | |||
TextDrawStrAt(G, "Molecules", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "Molecules", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | |||
break; | break; | |||
case 6: | case 6: | |||
TextDrawStrAt(G, "C-alphas", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | TextDrawStrAt(m_G, "C-alphas", x + DIP2PIXEL(80), y ORTHOCGOARGVAR); | |||
break; | break; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
if (!ORTHOCGOARGB || !(SettingGetGlobal_b(G, cSetting_show_frame_rate) || Movi | if (!ORTHOCGOARGB || !(SettingGetGlobal_b(m_G, cSetting_show_frame_rate) || Mo | |||
ePlaying(G))) { | viePlaying(m_G))) { | |||
ButModeDrawFastImpl(block, true ORTHOCGOARGVAR); | ButModeDrawFastImpl(this, true ORTHOCGOARGVAR); | |||
} | } | |||
} | } | |||
static short ButModeDrawFast(Block * block ORTHOCGOARG){ | bool CButMode::fastDraw(CGO* orthoCGO){ | |||
return ButModeDrawFastImpl(block, false ORTHOCGOARGVAR); | return ButModeDrawFastImpl(this, false, orthoCGO); | |||
} | } | |||
short ButModeDrawFastImpl(Block * block, short definitely ORTHOCGOARG) | static bool ButModeDrawFastImpl(Block * block, short definitely ORTHOCGOARG) | |||
{ | { | |||
PyMOLGlobals *G = block->G; | PyMOLGlobals *G = block->m_G; | |||
CButMode *I = G->ButMode; | CButMode *I = block->m_G->ButMode; | |||
int x, y; | int x, y; | |||
float *textColor = I->Block->TextColor; | float *textColor = I->TextColor; | |||
float *textColor2 = I->TextColor2; | float *textColor2 = I->TextColor2; | |||
if (!definitely && (!(SettingGetGlobal_b(G, cSetting_show_frame_rate) || Movie Playing(G)))) { | if (!definitely && (!(SettingGetGlobal_b(G, cSetting_show_frame_rate) || Movie Playing(G)))) { | |||
return false; | return false; | |||
} | } | |||
x = I->Block->rect.left + cButModeLeftMargin; | x = I->rect.left + cButModeLeftMargin; | |||
y = I->Block->rect.bottom + cButModeLineHeight + cButModeBottomMargin; | y = I->rect.bottom + cButModeLineHeight + cButModeBottomMargin; | |||
TextSetColor(G, I->Block->TextColor); | TextSetColor(G, I->TextColor); | |||
y -= cButModeLineHeight; | y -= cButModeLineHeight; | |||
#ifndef PURE_OPENGL_ES_2 | #ifndef PURE_OPENGL_ES_2 | |||
{ | { | |||
int buffer; | int buffer; | |||
/* TODO : Why do we only do this for the back right buffer, | /* TODO : Why do we only do this for the back right buffer, | |||
for performance? */ | for performance? */ | |||
glGetIntegerv(GL_DRAW_BUFFER, (GLint *) & buffer); | glGetIntegerv(GL_DRAW_BUFFER, (GLint *) & buffer); | |||
if(buffer != GL_BACK_RIGHT) { | if(buffer != GL_BACK_RIGHT) { | |||
#else | #else | |||
{ | { | |||
skipping to change at line 476 | skipping to change at line 476 | |||
} else if(frame_rate) { | } else if(frame_rate) { | |||
} | } | |||
} | } | |||
return true; | return true; | |||
} | } | |||
/*========================================================================*/ | /*========================================================================*/ | |||
int ButModeInit(PyMOLGlobals * G) | int ButModeInit(PyMOLGlobals * G) | |||
{ | { | |||
CButMode *I = NULL; | CButMode *I = NULL; | |||
if((I = (G->ButMode = Calloc(CButMode, 1)))) { | if((I = (G->ButMode = new CButMode(G)))) { | |||
int a; | int a; | |||
I->Rate = 0.0; | I->Rate = 0.0; | |||
I->Samples = 0.0; | I->Samples = 0.0; | |||
I->RateShown = 0.0; | I->RateShown = 0.0; | |||
I->Delay = 0.0; | I->Delay = 0.0; | |||
I->DeferCnt = 0; | I->DeferCnt = 0; | |||
I->DeferTime = 0.0F; | I->DeferTime = 0.0F; | |||
I->NCode = cButModeCount; | I->NCode = cButModeCount; | |||
skipping to change at line 550 | skipping to change at line 550 | |||
strcpy(I->Code[cButModeMovViewZ], "MvVZ "); | strcpy(I->Code[cButModeMovViewZ], "MvVZ "); | |||
strcpy(I->Code[cButModeDragObj], "DrgO "); | strcpy(I->Code[cButModeDragObj], "DrgO "); | |||
strcpy(I->Code[cButModeInvMoveSlabAndZoom], "IMSZ "); | strcpy(I->Code[cButModeInvMoveSlabAndZoom], "IMSZ "); | |||
strcpy(I->Code[cButModeInvTransZ], "IMvZ "); | strcpy(I->Code[cButModeInvTransZ], "IMvZ "); | |||
strcpy(I->Code[cButModeSeleSetBox], " Box "); | strcpy(I->Code[cButModeSeleSetBox], " Box "); | |||
strcpy(I->Code[cButModeInvRotZ], "IRtZ "); | strcpy(I->Code[cButModeInvRotZ], "IRtZ "); | |||
strcpy(I->Code[cButModeRotL], "RotL " ); | strcpy(I->Code[cButModeRotL], "RotL " ); | |||
strcpy(I->Code[cButModeMovL], "MovL " ); | strcpy(I->Code[cButModeMovL], "MovL " ); | |||
strcpy(I->Code[cButModeMvzL], "MvzL " ); | strcpy(I->Code[cButModeMvzL], "MvzL " ); | |||
I->Block = OrthoNewBlock(G, NULL); | I->active = true; | |||
I->Block->fClick = ButModeClick; | ||||
I->Block->fDraw = ButModeDraw; | I->TextColor[0] = 0.2F; | |||
I->Block->fFastDraw = ButModeDrawFast; | I->TextColor[1] = 1.0F; | |||
I->Block->fReshape = BlockReshape; | I->TextColor[2] = 0.2F; | |||
I->Block->active = true; | ||||
I->Block->TextColor[0] = 0.2F; | ||||
I->Block->TextColor[1] = 1.0F; | ||||
I->Block->TextColor[2] = 0.2F; | ||||
I->TextColor1[0] = 0.5F; | I->TextColor1[0] = 0.5F; | |||
I->TextColor1[1] = 0.5F; | I->TextColor1[1] = 0.5F; | |||
I->TextColor1[2] = 1.0F; | I->TextColor1[2] = 1.0F; | |||
I->TextColor2[0] = 0.8F; | I->TextColor2[0] = 0.8F; | |||
I->TextColor2[1] = 0.8F; | I->TextColor2[1] = 0.8F; | |||
I->TextColor2[2] = 0.8F; | I->TextColor2[2] = 0.8F; | |||
I->TextColor3[0] = 1.0F; | I->TextColor3[0] = 1.0F; | |||
I->TextColor3[1] = 0.5F; | I->TextColor3[1] = 0.5F; | |||
I->TextColor3[2] = 0.5F; | I->TextColor3[2] = 0.5F; | |||
OrthoAttach(G, I->Block, cOrthoTool); | OrthoAttach(G, I, cOrthoTool); | |||
return 1; | return 1; | |||
} else | } else | |||
return 0; | return 0; | |||
} | } | |||
/*========================================================================*/ | /*========================================================================*/ | |||
int ButModeCheckPossibleSingleClick(PyMOLGlobals * G, int button, int mod) | int ButModeCheckPossibleSingleClick(PyMOLGlobals * G, int button, int mod) | |||
{ | { | |||
int click_button = -1; | int click_button = -1; | |||
switch (button) { | switch (button) { | |||
End of changes. 79 change blocks. | ||||
166 lines changed or deleted | 160 lines changed or added |