「lmolvie(API)」の版間の差分
 (→API)  | 
				|||
| (同じ利用者による、間の16版が非表示) | |||
| 行1: | 行1: | ||
| − | DataExpress/eosOpenGL/src/'''lmolvie'''  | + | DataExpress/eosOpenGL/src/'''lmolvie'''は[[openGL]]を使用したビューア[[molvie]]のための[[API]]です。  | 
== 定数 ==  | == 定数 ==  | ||
| 行65: | 行65: | ||
== API ==  | == API ==  | ||
| − | |||
| − | |||
| − | |||
=== 初期設定 ===  | === 初期設定 ===  | ||
| + | Normal mode  | ||
  extern void lmolvieInitNormal(void);  |   extern void lmolvieInitNormal(void);  | ||
| + | |||
| + | Parallel mode  | ||
| + |  extern void lmolvieInitParallel(void);  | ||
| + | <br>  | ||
| + | |||
| + | === 画面表示 ===  | ||
| + | Normal mode  | ||
| + |  extern void lmolvieDisplayNormal(void);  | ||
| + | |||
| + | Parallel mode  | ||
| + |  extern void lmolvieDisplayParallel(void);  | ||
| + | |||
| + | 画面表示のテスト  | ||
| + |  extern void lmolvieDisplayTest(void);  | ||
| + | <br>  | ||
| + | |||
| + | === 再表示 ===  | ||
| + | Normal mode  | ||
| + |  extern void lmolvieReshapeNormal(int width, int height);  | ||
| + | |||
| + | Parallel mode  | ||
| + |  extern void lmolvieReshapeParallel(int width, int height);  | ||
| + | <br>  | ||
=== アイドル処理 ===  | === アイドル処理 ===  | ||
| 行75: | 行96: | ||
  extern void lmolvieIdleTest(void);  |   extern void lmolvieIdleTest(void);  | ||
| − | + | Normal mode  | |
  extern void lmolvieIdleNormal(void);  |   extern void lmolvieIdleNormal(void);  | ||
スタティック変数__accelerator(初期値: 0)に依って[[#視点移動]]を行います。  | スタティック変数__accelerator(初期値: 0)に依って[[#視点移動]]を行います。  | ||
| 行97: | 行118: | ||
</table>  | </table>  | ||
<br>  | <br>  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=== マウスイベント ===  | === マウスイベント ===  | ||
====  クリック ====  | ====  クリック ====  | ||
MOUSE_FUNCTIONが定義されているときのみ有効です。  | MOUSE_FUNCTIONが定義されているときのみ有効です。  | ||
| + | <br>  | ||
===== メイン =====  | ===== メイン =====  | ||
| 行140: | 行152: | ||
<br>  | <br>  | ||
| − | =====   | + | ===== Drive mode時 =====  | 
| − | + | ||
  extern void lmolvieMouseDrive(int button, int state, int x, int y);  |   extern void lmolvieMouseDrive(int button, int state, int x, int y);  | ||
buttonとstateにより[[#視点移動]]を行います。  | buttonとstateにより[[#視点移動]]を行います。  | ||
| 行173: | 行184: | ||
<br>  | <br>  | ||
| − | Parallel  | + | ===== Parallel mode時 =====  | 
| − | + | ||
処理なし  | 処理なし  | ||
| + |  extern void lmolvieMouseParallel(int button, int state, int x, int y);  | ||
| + | <br>  | ||
| − | + | ===== MultiProtein mode時 =====  | |
| − | + | ||
処理なし  | 処理なし  | ||
| + |  extern void lmolvieMouseMulti(int button, int state, int x, int y);  | ||
| + | <br>  | ||
==== ドラッグ ====  | ==== ドラッグ ====  | ||
MOTION_FUNCTIONが定義されているときのみ有効です。  | MOTION_FUNCTIONが定義されているときのみ有効です。  | ||
| + | <br>  | ||
===== メイン =====  | ===== メイン =====  | ||
| 行212: | 行226: | ||
<br>  | <br>  | ||
| − | =====   | + | ===== Drive mode時 =====  | 
| − | + | ||
  extern void lmolvieMouseMotionDrive(int x, int y);  |   extern void lmolvieMouseMotionDrive(int x, int y);  | ||
ドラッグ時のボタンpressedButtonに依った処理を行います。  | ドラッグ時のボタンpressedButtonに依った処理を行います。  | ||
| 行236: | 行249: | ||
<br>  | <br>  | ||
| − | Parallel  | + | ===== Parallel mode時 =====  | 
  extern void lmolvieMouseMotionParallel(int x, int y);  |   extern void lmolvieMouseMotionParallel(int x, int y);  | ||
ドラッグ時のボタンpressedButtonに依った処理を行います。  | ドラッグ時のボタンpressedButtonに依った処理を行います。  | ||
| 行259: | 行272: | ||
<br>  | <br>  | ||
| − | + | ===== MultiProtein mode時 =====  | |
  extern void lmolvieMouseMotionMulti(int x, int y);  |   extern void lmolvieMouseMotionMulti(int x, int y);  | ||
ドラッグ時のボタンpressedButtonに依った処理を行います。  | ドラッグ時のボタンpressedButtonに依った処理を行います。  | ||
| 行284: | 行297: | ||
==== マウス移動 ====  | ==== マウス移動 ====  | ||
PASSIVEMOTION_FUNCTIONが定義されているときのみ有効です。  | PASSIVEMOTION_FUNCTIONが定義されているときのみ有効です。  | ||
| + | <br>  | ||
===== メイン =====  | ===== メイン =====  | ||
| 行313: | 行327: | ||
<br>  | <br>  | ||
| − | =====   | + | ===== Drive mode時 =====  | 
| − | + | ||
| − | + | ||
処理なし  | 処理なし  | ||
| + |  extern void lmolvieMousePassiveMotionDrive(int x, int y);  | ||
| + | <br>  | ||
| − | Parallel  | + | ===== Parallel mode時 =====  | 
| − | + | ||
処理なし  | 処理なし  | ||
| + |  extern void lmolvieMousePassiveMotionParallel(int x, int y);  | ||
| + | <br>  | ||
| − | + | ===== MultiProtein mode時 =====  | |
| − | + | ||
処理なし  | 処理なし  | ||
| + |  extern void lmolvieMousePassiveMotionMulti(int x, int y);  | ||
| + | <br>  | ||
=== キーボードイベント ===  | === キーボードイベント ===  | ||
KEYBOARD_FUNCTIONが定義されているときのみ有効です。  | KEYBOARD_FUNCTIONが定義されているときのみ有効です。  | ||
| + | <br>  | ||
==== メイン ====  | ==== メイン ====  | ||
| 行360: | 行377: | ||
<br>  | <br>  | ||
| − | ====   | + | ==== Normal mode時 ====  | 
| − | + | ||
  extern void lmolvieKeyboardNormal(unsigned char pushkey, int x, int y);  |   extern void lmolvieKeyboardNormal(unsigned char pushkey, int x, int y);  | ||
キーpushkeyによる処理を行います。  | キーpushkeyによる処理を行います。  | ||
| 行395: | 行411: | ||
	<tr>  | 	<tr>  | ||
		<td>c</td>  | 		<td>c</td>  | ||
| − | 		<td></td>  | + | 		<td>C switchの切り替え(ON, mainChain, OFF)</td>  | 
	</tr>  | 	</tr>  | ||
	<tr>  | 	<tr>  | ||
		<td>o</td>  | 		<td>o</td>  | ||
| − | 		<td></td>  | + | 		<td>O switchの切り替え(ON, OFF)</td>  | 
	</tr>  | 	</tr>  | ||
	<tr>  | 	<tr>  | ||
		<td>n</td>  | 		<td>n</td>  | ||
| − | 		<td></td>  | + | 		<td>N switchの切り替え(ON, OFF)</td>  | 
	</tr>  | 	</tr>  | ||
	<tr>  | 	<tr>  | ||
		<td>s</td>  | 		<td>s</td>  | ||
| − | 		<td></td>  | + | 		<td>S switchの切り替え(ON, OFF)</td>  | 
	</tr>  | 	</tr>  | ||
	<tr>  | 	<tr>  | ||
		<td>p</td>  | 		<td>p</td>  | ||
| − | 		<td></td>  | + | 		<td>P switchの切り替え(ON, OFF)</td>  | 
	</tr>  | 	</tr>  | ||
	<tr>  | 	<tr>  | ||
		<td>h</td>  | 		<td>h</td>  | ||
| − | 		<td></td>  | + | 		<td>H switchの切り替え(ON, OFF)</td>  | 
	</tr>  | 	</tr>  | ||
	<tr>  | 	<tr>  | ||
		<td>f</td>  | 		<td>f</td>  | ||
| − | 		<td></td>  | + | 		<td>Fe switchの切り替え(ON, OFF)</td>  | 
	</tr>  | 	</tr>  | ||
	<tr>  | 	<tr>  | ||
| 行483: | 行499: | ||
	<tr>  | 	<tr>  | ||
		<td>F</td>  | 		<td>F</td>  | ||
| − | 		<td></td>  | + | 		<td>CentreTagの切り替え(ON, OFF)</td>  | 
	</tr>  | 	</tr>  | ||
	<tr>  | 	<tr>  | ||
| 行500: | 行516: | ||
<br>  | <br>  | ||
| − | Drive  | + | ==== Drive mode時 ====  | 
  extern void lmolvieKeyboardDrive(unsigned char pushkey, int x, int y);  |   extern void lmolvieKeyboardDrive(unsigned char pushkey, int x, int y);  | ||
| + | キーpushkeyによる処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pushkey</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>q</td>  | ||
| + | 		<td>終了</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>n</td>  | ||
| + | 		<td>Normal mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>c</td>  | ||
| + | 		<td>check!</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>0</td>  | ||
| + | 		<td>NoneAtom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>1</td>  | ||
| + | 		<td>Atom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>2</td>  | ||
| + | 		<td>Number mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>3</td>  | ||
| + | 		<td>AminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>4</td>  | ||
| + | 		<td>Temperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>5</td>  | ||
| + | 		<td>CStickNumber mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>6</td>  | ||
| + | 		<td>CStickAminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>7</td>  | ||
| + | 		<td>CStickTemperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>v</td>  | ||
| + | 		<td>voice!</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>r</td>  | ||
| + | 		<td>camera reset</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>w</td>  | ||
| + | 		<td>中心に近づく</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>e</td>  | ||
| + | 		<td>中心から離れる</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>s</td>  | ||
| + | 		<td>speed change</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
| − | + | ==== MultiProtein mode時 ====  | |
  extern void lmolvieKeyboardParallel(unsigned char pushkey, int x, int y);  |   extern void lmolvieKeyboardParallel(unsigned char pushkey, int x, int y);  | ||
| + | キーpushkeyによる処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pushkey</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>q</td>  | ||
| + | 		<td>終了</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>n</td>  | ||
| + | 		<td>Normal mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>d</td>  | ||
| + | 		<td>Drive mode</td>  | ||
| + | 	</tr>  | ||
| − | Surface  | + | 	<tr>  | 
| + | 		<td>i</td>  | ||
| + | 		<td>[[PDB]]データの読み込み(loadPDB1)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>0</td>  | ||
| + | 		<td>NoneAtom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>1</td>  | ||
| + | 		<td>Atom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>2</td>  | ||
| + | 		<td>Number mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>3</td>  | ||
| + | 		<td>AminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>4</td>  | ||
| + | 		<td>Temperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>5</td>  | ||
| + | 		<td>CStickNumber mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>6</td>  | ||
| + | 		<td>CStickAminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>7</td>  | ||
| + | 		<td>CStickTemperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>v</td>  | ||
| + | 		<td>voice!</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>r</td>  | ||
| + | 		<td>camera reset</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>w</td>  | ||
| + | 		<td>中心に近づく</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>e</td>  | ||
| + | 		<td>中心から離れる</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>F</td>  | ||
| + | 		<td>CentreTagの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
| + | |||
| + | ==== Surface mode時 ====  | ||
  extern void lmolvieKeyboardSurface(unsigned char pushkey, int x, int y);  |   extern void lmolvieKeyboardSurface(unsigned char pushkey, int x, int y);  | ||
| − | + | キーpushkeyによる処理を行います。  | |
| − | + | <table border=1>  | |
| − | + | 	<tr>  | |
| − | + | 		<th>pushkey</th>  | |
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>q</td>  | ||
| + | 		<td>終了</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>n</td>  | ||
| + | 		<td>Normal mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>d</td>  | ||
| + | 		<td>Drive mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>0</td>  | ||
| + | 		<td>NoneAtom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>1</td>  | ||
| + | 		<td>Atom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>2</td>  | ||
| + | 		<td>Number mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>3</td>  | ||
| + | 		<td>AminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>4</td>  | ||
| + | 		<td>Temperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>5</td>  | ||
| + | 		<td>CStickNumber mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>6</td>  | ||
| + | 		<td>CStickAminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>7</td>  | ||
| + | 		<td>CStickTemperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>v</td>  | ||
| + | 		<td>voice!</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>r</td>  | ||
| + | 		<td>camera reset</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>w</td>  | ||
| + | 		<td>中心に近づく</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>e</td>  | ||
| + | 		<td>中心から離れる</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>y</td>  | ||
| + | 		<td>Density +0.1</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>h</td>  | ||
| + | 		<td>Density -0.1</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>u</td>  | ||
| + | 		<td>Density +1.0</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>j</td>  | ||
| + | 		<td>Density -1.0</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>i</td>  | ||
| + | 		<td>Density +10.0</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>k</td>  | ||
| + | 		<td>Density -10.0</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>F</td>  | ||
| + | 		<td>CentreTagの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
=== 操作モードの設定・取得 ===  | === 操作モードの設定・取得 ===  | ||
| 行519: | 行776: | ||
現在の[[#操作モード]]をoperationModeに設定します。  | 現在の[[#操作モード]]をoperationModeに設定します。  | ||
  extern void operationModeSet(operationMode);  |   extern void operationModeSet(operationMode);  | ||
| + | <br>  | ||
| + | === 光源 ===  | ||
| + | 光源の設定  | ||
  extern void lmolvieLightSet(void);  |   extern void lmolvieLightSet(void);  | ||
| + | |||
| + | 光源の位置を取得(index=0, 1)  | ||
  extern GLfloat* get_LightPos(int index);  |   extern GLfloat* get_LightPos(int index);  | ||
| + | <br>  | ||
| − | + | === サウンド ===  | |
| + | Voice(未実装)  | ||
  extern void lmolvieVoice(void);  |   extern void lmolvieVoice(void);  | ||
| + | サウンド(未実装)  | ||
| + |  extern void monoSound(float amplitude, float Hz);  | ||
| + | <br>  | ||
| + | |||
| + | === 境界線 ===  | ||
| + | 境界線を描画します。(未実装)  | ||
  extern void drawContour(contourLinesSet* contour);  |   extern void drawContour(contourLinesSet* contour);  | ||
| + | <br>  | ||
| + | === スケールバー ===  | ||
| + | スケールバーを切り替えます。(無し, 1nm, 5nm, 10nm)  | ||
  extern void scaleBarSwitch();  |   extern void scaleBarSwitch();  | ||
| + | <br>  | ||
===molvieViewer===  | ===molvieViewer===  | ||
| + | ==== 画面表示 ====  | ||
| + |  extern void lmolvieViewerDisplay(void);  | ||
| + | <br>  | ||
| + | |||
| + | ==== アイドル処理 ====  | ||
| + | 処理なし  | ||
  extern void lmolvieViewerIdle(void);  |   extern void lmolvieViewerIdle(void);  | ||
| − | + | <br>  | |
| − | + | ||
| + | ==== マウスイベント ====  | ||
| + | ===== クリック =====  | ||
| + | 処理なし  | ||
  extern void lmolvieViewerMouse(int button, int state, int x, int y);  |   extern void lmolvieViewerMouse(int button, int state, int x, int y);  | ||
| + | <br>  | ||
| + | |||
| + | ===== ドラッグ =====  | ||
  extern void lmolvieViewerMouseMotion(int x, int y);  |   extern void lmolvieViewerMouseMotion(int x, int y);  | ||
| + | ドラッグ時のボタンpressedButtonに依った処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pressedButton</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_LEFT_BUTTON</td>  | ||
| + | 		<td>[[#中心回転]]</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_MIDDLE_BUTTON</td>  | ||
| + | 		<td>処理なし</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_RIGHT_BUTTON</td>  | ||
| + | 		<td>[[#視点回転]]</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
| + | |||
| + | ===== マウス移動 =====  | ||
| + | 処理なし  | ||
  extern void lmolvieViewerMousePassiveMotion(int x, int y);  |   extern void lmolvieViewerMousePassiveMotion(int x, int y);  | ||
| − |   extern void   | + | <br>  | 
| + | |||
| + | ===== キーボードイベント =====  | ||
| + |   extern void lmolvieViewerKeyboard(unsigned char pushkey, int x, int y);  | ||
| + | キーpushkeyによる処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pushkey</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>q</td>  | ||
| + | 		<td>終了</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>c</td>  | ||
| + | 		<td>C switchの切り替え(ON, mainChain, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>o</td>  | ||
| + | 		<td>O switchの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>n</td>  | ||
| + | 		<td>N switchの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>s</td>  | ||
| + | 		<td>S switchの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>p</td>  | ||
| + | 		<td>P switchの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>h</td>  | ||
| + | 		<td>H switchの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>f</td>  | ||
| + | 		<td>Fe switchの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>0</td>  | ||
| + | 		<td>NoneAtom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>1</td>  | ||
| + | 		<td>Atom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>2</td>  | ||
| + | 		<td>Number mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>3</td>  | ||
| + | 		<td>AminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>4</td>  | ||
| + | 		<td>Temperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>5</td>  | ||
| + | 		<td>CStickNumber mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>6</td>  | ||
| + | 		<td>CStickAminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>7</td>  | ||
| + | 		<td>CStickTemperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>8</td>  | ||
| + | 		<td>DistanceFromTarget mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>9</td>  | ||
| + | 		<td>WireFrame mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>!</td>  | ||
| + | 		<td>Chain mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>v</td>  | ||
| + | 		<td>voice!</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>r</td>  | ||
| + | 		<td>camera reset</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>w</td>  | ||
| + | 		<td>中心に近づく</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>e</td>  | ||
| + | 		<td>中心から離れる</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>F</td>  | ||
| + | 		<td>CentreTagの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>b</td>  | ||
| + | 		<td>状態保存(未実装)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>g</td>  | ||
| + | 		<td>状態読込(未実装)</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
| + | |||
| + | ===== 特殊キーイベント =====  | ||
| + |  extern void lmolvieViewerSpecial(int pushkey, int x, int y);  | ||
| + | <br>  | ||
===molvieMrcViewer===  | ===molvieMrcViewer===  | ||
| − |   extern void   | + | ==== 画面表示 ====  | 
| + |   extern void lmolvieMrcViewerDisplay(void);  | ||
| + | <br>  | ||
| + | |||
| + | ==== マウスイベント ====  | ||
| + | ===== クリック =====  | ||
| + | 処理なし  | ||
  extern void lmolvieMrcViewerMouse(int button, int state, int x, int y);  |   extern void lmolvieMrcViewerMouse(int button, int state, int x, int y);  | ||
| + | <br>  | ||
| + | |||
| + | ===== ドラッグ =====  | ||
  extern void lmolvieMrcViewerMouseMotion(int x, int y);  |   extern void lmolvieMrcViewerMouseMotion(int x, int y);  | ||
| + | ドラッグ時のボタンpressedButtonに依った処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pressedButton</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_LEFT_BUTTON</td>  | ||
| + | 		<td>[[#中心回転]]</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_MIDDLE_BUTTON</td>  | ||
| + | 		<td>処理なし</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_RIGHT_BUTTON</td>  | ||
| + | 		<td>[[#視点回転]]</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
| + | |||
| + | ===== マウス移動 =====  | ||
| + | 処理なし  | ||
  extern void lmolvieMrcViewerMousePassiveMotion(int x, int y);  |   extern void lmolvieMrcViewerMousePassiveMotion(int x, int y);  | ||
| − |   extern void   | + | <br>  | 
| + | |||
| + | ==== キーボードイベント ====  | ||
| + |   extern void lmolvieMrcViewerKeyboard(unsigned char pushkey, int x, int y);  | ||
| + | キーpushkeyによる処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pushkey</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>q</td>  | ||
| + | 		<td>終了</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>v</td>  | ||
| + | 		<td>voice!</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>r</td>  | ||
| + | 		<td>camera reset</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>w</td>  | ||
| + | 		<td>中心に近づく</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>e</td>  | ||
| + | 		<td>中心から離れる</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>y</td>  | ||
| + | 		<td>Density +0.1</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>h</td>  | ||
| + | 		<td>Density -0.1</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>u</td>  | ||
| + | 		<td>Density +1.0</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>j</td>  | ||
| + | 		<td>Density -1.0</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>i</td>  | ||
| + | 		<td>Density +10.0</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>k</td>  | ||
| + | 		<td>Density -10.0</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>F</td>  | ||
| + | 		<td>CentreTagの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
===molvieProjection===  | ===molvieProjection===  | ||
| − | + | ==== マウスイベント ====  | |
| + | ===== クリック =====  | ||
| + | 処理なし  | ||
  extern void lmolvieProjectionMouse(int button, int state, int x, int y);  |   extern void lmolvieProjectionMouse(int button, int state, int x, int y);  | ||
| + | <br>  | ||
| + | |||
| + | ===== ドラッグ =====  | ||
  extern void lmolvieProjectionMouseMotion(int x, int y);  |   extern void lmolvieProjectionMouseMotion(int x, int y);  | ||
| + | ドラッグ時のボタンpressedButtonに依った処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pressedButton</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_LEFT_BUTTON</td>  | ||
| + | 		<td>物体回転(proteinRotateX, proteinRotateY)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_MIDDLE_BUTTON</td>  | ||
| + | 		<td>[[#中心移動]]</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>GLUT_RIGHT_BUTTON</td>  | ||
| + | 		<td>[[#中心回転]]</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
| + | |||
| + | ===== マウス移動 =====  | ||
| + | 処理なし  | ||
  extern void lmolvieProjectionMousePassiveMotion(int x, int y);  |   extern void lmolvieProjectionMousePassiveMotion(int x, int y);  | ||
| + | <br>  | ||
| + | |||
| + | ==== キーボードイベント ====  | ||
| + |  extern void lmolvieProjectionKeyboard(unsigned char pushkey, int x, int y);  | ||
| + | キーpushkeyによる処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pushkey</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>q</td>  | ||
| + | 		<td>終了</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>s</td>  | ||
| + | 		<td>save PPM</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>l</td>  | ||
| + | 		<td></td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>r</td>  | ||
| + | 		<td>camera reset</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>w</td>  | ||
| + | 		<td>中心に近づく</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>e</td>  | ||
| + | 		<td>中心から離れる</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>u</td>  | ||
| + | 		<td>テクスチャのスケール+0.01</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>d</td>  | ||
| + | 		<td>テクスチャのスケール-0.01</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>g</td>  | ||
| + | 		<td>テクスチャのx座標+0.5</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>j</td>  | ||
| + | 		<td>テクスチャのx座標-0.5</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>y</td>  | ||
| + | 		<td>テクスチャのy座標+0.5</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>h</td>  | ||
| + | 		<td>テクスチャのy座標-0.5</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>b</td>  | ||
| + | 		<td>テクスチャのz座標+0.5</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>n</td>  | ||
| + | 		<td>テクスチャのz座標-0.5</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>i</td>  | ||
| + | 		<td>スケール+0.01</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>k</td>  | ||
| + | 		<td>スケール-0.01</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>S</td>  | ||
| + | 		<td>スケールバーの切り替え(無し, 1nm, 5nm, 10nm)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>p</td>  | ||
| + | 		<td>Parallel mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>R</td>  | ||
| + | 		<td>回転座標(x, y, z)の出力</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>X</td>  | ||
| + | 		<td>回転座標xを標準入力で取得</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>Y</td>  | ||
| + | 		<td>回転座標yを標準入力で取得</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>Z</td>  | ||
| + | 		<td>回転座標zを標準入力で取得</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
===molvieDock===  | ===molvieDock===  | ||
| − | + | ==== 画面表示 ====  | |
| − | + | ||
  extern void lmolvieDockDisplay(void);  |   extern void lmolvieDockDisplay(void);  | ||
| + | |||
| + | [[PDB]]ファイルの描画  | ||
| + |  extern void displayMultiPDB1();  | ||
| + | <br>  | ||
| + | |||
| + | ==== キーボードイベント ====  | ||
| + |  extern void lmolvieDockKeyboard(unsigned char pushkey, int x, int y);  | ||
| + | キーpushkeyによる処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pushkey</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>q</td>  | ||
| + | 		<td>終了</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>i</td>  | ||
| + | 		<td>[[PDB]]データの読み込み(loadPDB1)</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>0</td>  | ||
| + | 		<td>NoneAtom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>1</td>  | ||
| + | 		<td>Atom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>2</td>  | ||
| + | 		<td>Number mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>3</td>  | ||
| + | 		<td>AminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>4</td>  | ||
| + | 		<td>Temperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>5</td>  | ||
| + | 		<td>CStickNumber mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>6</td>  | ||
| + | 		<td>CStickAminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>7</td>  | ||
| + | 		<td>CStickTemperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>c</td>  | ||
| + | 		<td>Protein Change</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>r</td>  | ||
| + | 		<td>camera reset</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>w</td>  | ||
| + | 		<td>中心に近づく</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>e</td>  | ||
| + | 		<td>中心から離れる</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>F</td>  | ||
| + | 		<td>CentreTagの切り替え(ON, OFF)</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
===molvieFlight===  | ===molvieFlight===  | ||
| − | + | ==== 画面表示 ====  | |
  extern void lmolvieFlightDisplay(void);  |   extern void lmolvieFlightDisplay(void);  | ||
| + | <br>  | ||
| + | |||
| + | ==== アイドル処理 ====  | ||
  extern void lmolvieFlightIdle(void);  |   extern void lmolvieFlightIdle(void);  | ||
| + | <br>  | ||
| + | |||
| + | ==== キーボードイベント ====  | ||
| + |  extern void lmolvieFlightKeyboard(unsigned char pushkey, int x, int y);  | ||
| + | キーpushkeyによる処理を行います。  | ||
| + | <table border=1>  | ||
| + | 	<tr>  | ||
| + | 		<th>pushkey</th>  | ||
| + | 		<th>処理</th>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>q</td>  | ||
| + | 		<td>終了</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>c</td>  | ||
| + | 		<td>check!</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>0</td>  | ||
| + | 		<td>NoneAtom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>1</td>  | ||
| + | 		<td>Atom mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>2</td>  | ||
| + | 		<td>Number mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>3</td>  | ||
| + | 		<td>AminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>4</td>  | ||
| + | 		<td>Temperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>5</td>  | ||
| + | 		<td>CStickNumber mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>6</td>  | ||
| + | 		<td>CStickAminoAcid mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>7</td>  | ||
| + | 		<td>CStickTemperature mode</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>v</td>  | ||
| + | 		<td>voice!</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>r</td>  | ||
| + | 		<td>camera reset</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>w</td>  | ||
| + | 		<td>中心に近づく</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>e</td>  | ||
| + | 		<td>中心から離れる</td>  | ||
| + | 	</tr>  | ||
| + | 	<tr>  | ||
| + | 		<td>s</td>  | ||
| + | 		<td>speed change</td>  | ||
| + | 	</tr>  | ||
| + | </table>  | ||
| + | <br>  | ||
===molvieTest===  | ===molvieTest===  | ||
  extern void lmolvieTest(void);  |   extern void lmolvieTest(void);  | ||
| − | + | <br>  | |
=== カメラ ===  | === カメラ ===  | ||
| 行572: | 行1,368: | ||
  extern void myCameraRotateY(GLdouble angle);           |   extern void myCameraRotateY(GLdouble angle);           | ||
  extern void myCameraRotateZ(GLdouble angle);  |   extern void myCameraRotateZ(GLdouble angle);  | ||
| + | <br>  | ||
==== 視点回転 ====  | ==== 視点回転 ====  | ||
| 行577: | 行1,374: | ||
  extern void myCameraEyeRotateX(GLdouble angle);  |   extern void myCameraEyeRotateX(GLdouble angle);  | ||
  extern void myCameraEyeRotateY(GLdouble angle);  |   extern void myCameraEyeRotateY(GLdouble angle);  | ||
| + | <br>  | ||
==== 中心移動 ====  | ==== 中心移動 ====  | ||
| 行583: | 行1,381: | ||
  extern void myCameraTranslateY(GLdouble pan);           |   extern void myCameraTranslateY(GLdouble pan);           | ||
  extern void myCameraTranslateZ(GLdouble pan);    |   extern void myCameraTranslateZ(GLdouble pan);    | ||
| + | <br>  | ||
==== 視点移動 ====  | ==== 視点移動 ====  | ||
| 行613: | 行1,412: | ||
視点・中心座標を[[PDB]]ファイルの中心(__pdbCenter)に合わせます。(各座標間が元の1/100となる)  | 視点・中心座標を[[PDB]]ファイルの中心(__pdbCenter)に合わせます。(各座標間が元の1/100となる)  | ||
  extern void resetDriveMyCamera();  |   extern void resetDriveMyCamera();  | ||
| + | <br>  | ||
| + | ==== カメラ情報取得 ====  | ||
cameraInfo型のカメラ情報をポインタとして返します。  | cameraInfo型のカメラ情報をポインタとして返します。  | ||
  extern cameraInfo* getMyCamera(void);  |   extern cameraInfo* getMyCamera(void);  | ||
| + | <br>  | ||
| + | ==== Up再計算 ====  | ||
Upの長さが1になるように再計算します。  | Upの長さが1になるように再計算します。  | ||
  extern void upCalc();  |   extern void upCalc();  | ||
| + | <br>  | ||
| + | ==== CentreTagの切り替え(ON, OFF) ====  | ||
  extern void setCameraCentreTag(int tag);  |   extern void setCameraCentreTag(int tag);  | ||
| + | <br>  | ||
| + | |||
| + | === [[PDB]]関連 ===  | ||
| + | ファイルfptInから[[PDB]]を読み込んで、pdbInへ格納します。  | ||
| + |  extern void lmolviePDBread(FILE* fptIn);  | ||
| + | |||
| + | pdbInを返します。  | ||
| + |  extern pdbFile* get_pdb(void);  | ||
| + | |||
| + | get_pdbで取得した[[PDB]]を描画します。  | ||
| + |  extern GLboolean myDisplayListMakeAtom(void);  | ||
| + | <br>  | ||
2015年3月20日 (金) 06:46時点における最新版
DataExpress/eosOpenGL/src/lmolvieはopenGLを使用したビューアmolvieのためのAPIです。
目次
定数
画面表示モード
typedef enum displayMode{
	none=0,
	atom=1,
	stick=2,
	serial=3,
	residue=4,
	temp=5,
	sticktemp=6,
	stickresidue=7
}displayMode;
操作モード
typedef enum operationMode {
	normal=0,
	drive=1,
	parallel=2,
	surface=3,
	multi=4,
	coaster=5
} operationMode;
構造体
入力・出力・コンフィグ
typedef struct molvieInfo {
    long flagRedirect;
    long flagIn;
    char* In;
    FILE* fptIn;
    
    long flagOut;
    char* Out;
    FILE* fptOut;
    
    long flagconfigFile;
    char* configFile;
    FILE* fptconfigFile;
    
    long flagmode;
    long mode;
    
} molvieInfo;
カメラ設定
typedef struct cameraInfo {
	GLdouble Fovy;
	GLdouble Aspect;
	GLdouble ClipNear;
	GLdouble ClipFar;
	GLdouble Eye[3];
	GLdouble Centre[3];
	GLdouble Up[3];
} cameraInfo;
座標情報
typedef struct Coord {
	GLfloat x;
	GLfloat y;
	GLfloat z;
} Coord; 
API
初期設定
Normal mode
extern void lmolvieInitNormal(void);
Parallel mode
extern void lmolvieInitParallel(void);
画面表示
Normal mode
extern void lmolvieDisplayNormal(void);
Parallel mode
extern void lmolvieDisplayParallel(void);
画面表示のテスト
extern void lmolvieDisplayTest(void);
再表示
Normal mode
extern void lmolvieReshapeNormal(int width, int height);
Parallel mode
extern void lmolvieReshapeParallel(int width, int height);
アイドル処理
テストメッセージの表示
extern void lmolvieIdleTest(void);
Normal mode
extern void lmolvieIdleNormal(void);
スタティック変数__accelerator(初期値: 0)に依って#視点移動を行います。
| __accelerator | 処理 | 
|---|---|
| 1 | 中心に近づく | 
| 2 | 中心から離れる | 
| それ以外 | 停止(何もしない) | 
マウスイベント
クリック
MOUSE_FUNCTIONが定義されているときのみ有効です。
メイン
クリック操作の処理です。(button:対応ボタン、state:状態、x, y:座標)
extern void lmolvieMouse(int button, int state, int x, int y);
#操作モードに依った処理を行います。
| 操作モード | 処理 | 
|---|---|
| 0 | lmolvieMouseNormal | 
| 1 | lmolvieMouseDrive | 
| 2 | lmolvieMouseParallel | 
| 3 | lmolvieMouseNormal | 
Drive mode時
extern void lmolvieMouseDrive(int button, int state, int x, int y);
buttonとstateにより#視点移動を行います。
| state | button | 処理 | 
|---|---|---|
| GLUT_DOWN | GLUT_LEFT_BUTTON | 中心に近づく(__accelerator=1) | 
| GLUT_DOWN | GLUT_RIGHT_BUTTON | 中心から離れる(__accelerator=2) | 
| GLUT_DOWN | GLUT_LEFT_BUTTON | 停止(__accelerator=0) | 
| GLUT_DOWN | GLUT_RIGHT_BUTTON | 停止(__accelerator=0) | 
Parallel mode時
処理なし
extern void lmolvieMouseParallel(int button, int state, int x, int y);
MultiProtein mode時
処理なし
extern void lmolvieMouseMulti(int button, int state, int x, int y);
ドラッグ
MOTION_FUNCTIONが定義されているときのみ有効です。
メイン
マウスのドラッグ操作による処理です。(x, y:座標)
extern void lmolvieMouseMotion(int x, int y);
#操作モードに依った処理を行います。
| 操作モード | 処理 | 
|---|---|
| 0 | lmolvieMouseMotionNormal | 
| 1 | lmolvieMouseMotionDrive | 
| 2 | lmolvieMouseMotionParallel | 
| 3 | lmolvieMouseMotionNormal | 
Drive mode時
extern void lmolvieMouseMotionDrive(int x, int y);
ドラッグ時のボタンpressedButtonに依った処理を行います。
| pressedButton | 処理 | 
|---|---|
| GLUT_LEFT_BUTTON | #視点回転 | 
| GLUT_MIDDLE_BUTTON | #視点回転 | 
| GLUT_RIGHT_BUTTON | #中心回転 | 
Parallel mode時
extern void lmolvieMouseMotionParallel(int x, int y);
ドラッグ時のボタンpressedButtonに依った処理を行います。
| pressedButton | 処理 | 
|---|---|
| GLUT_LEFT_BUTTON | 物体回転(proteinRotateX, proteinRotateY) | 
| GLUT_MIDDLE_BUTTON | #中心移動 | 
| GLUT_RIGHT_BUTTON | #中心回転 | 
MultiProtein mode時
extern void lmolvieMouseMotionMulti(int x, int y);
ドラッグ時のボタンpressedButtonに依った処理を行います。
| pressedButton | 処理 | 
|---|---|
| GLUT_LEFT_BUTTON | 物体回転(proteinRotateX, proteinRotateY) | 
| GLUT_MIDDLE_BUTTON | #中心移動 | 
| GLUT_RIGHT_BUTTON | #中心回転 | 
マウス移動
PASSIVEMOTION_FUNCTIONが定義されているときのみ有効です。
メイン
ボタンを押していない状態でのマウス移動による処理です。
extern void lmolvieMousePassiveMotion(int x, int y);
#操作モードに依った処理を行います。
| 操作モード | 処理 | 
|---|---|
| 0 | lmolvieMousePassiveMotionNormal | 
| 1 | lmolvieMousePassiveMotionDrive | 
| 2 | lmolvieMousePassiveMotionParallel | 
| 3 | lmolvieMousePassiveMotionNormal | 
Drive mode時
処理なし
extern void lmolvieMousePassiveMotionDrive(int x, int y);
Parallel mode時
処理なし
extern void lmolvieMousePassiveMotionParallel(int x, int y);
MultiProtein mode時
処理なし
extern void lmolvieMousePassiveMotionMulti(int x, int y);
キーボードイベント
KEYBOARD_FUNCTIONが定義されているときのみ有効です。
メイン
extern void lmolvieKeyboard(unsigned char pushkey, int x, int y);
#操作モードに依った処理を行います。
| 操作モード | 処理 | 
|---|---|
| 0 | lmolvieKeyboardNormal | 
| 1 | lmolvieKeyboardDrive | 
| 2 | lmolvieKeyboardParallel | 
| 3 | lmolvieKeyboardSurface | 
| 4 | lmolvieKeyboardMulti | 
Normal mode時
extern void lmolvieKeyboardNormal(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| d | Drive mode | 
| l | Parallel mode | 
| t | Surface mode | 
| m | MultiProtein mode(未実装) | 
| C | Coaster mode(未実装) | 
| c | C switchの切り替え(ON, mainChain, OFF) | 
| o | O switchの切り替え(ON, OFF) | 
| n | N switchの切り替え(ON, OFF) | 
| s | S switchの切り替え(ON, OFF) | 
| p | P switchの切り替え(ON, OFF) | 
| h | H switchの切り替え(ON, OFF) | 
| f | Fe switchの切り替え(ON, OFF) | 
| 0 | NoneAtom mode | 
| 1 | Atom mode | 
| 2 | Number mode | 
| 3 | AminoAcid mode | 
| 4 | Temperature mode | 
| 5 | CStickNumber mode | 
| 6 | CStickAminoAcid mode | 
| 7 | CStickTemperature mode | 
| 8 | DistanceFromTarget mode | 
| 9 | WireFrame mode | 
| ! | Chain mode | 
| v | voice! | 
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| F | CentreTagの切り替え(ON, OFF) | 
| Z | DSN6読み込み(未実装) | 
| b | 状態保存(未実装) | 
| g | 状態読込(未実装) | 
Drive mode時
extern void lmolvieKeyboardDrive(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| n | Normal mode | 
| c | check! | 
| 0 | NoneAtom mode | 
| 1 | Atom mode | 
| 2 | Number mode | 
| 3 | AminoAcid mode | 
| 4 | Temperature mode | 
| 5 | CStickNumber mode | 
| 6 | CStickAminoAcid mode | 
| 7 | CStickTemperature mode | 
| v | voice! | 
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| s | speed change | 
MultiProtein mode時
extern void lmolvieKeyboardParallel(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| n | Normal mode | 
| d | Drive mode | 
| i | PDBデータの読み込み(loadPDB1) | 
| 0 | NoneAtom mode | 
| 1 | Atom mode | 
| 2 | Number mode | 
| 3 | AminoAcid mode | 
| 4 | Temperature mode | 
| 5 | CStickNumber mode | 
| 6 | CStickAminoAcid mode | 
| 7 | CStickTemperature mode | 
| v | voice! | 
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| F | CentreTagの切り替え(ON, OFF) | 
Surface mode時
extern void lmolvieKeyboardSurface(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| n | Normal mode | 
| d | Drive mode | 
| 0 | NoneAtom mode | 
| 1 | Atom mode | 
| 2 | Number mode | 
| 3 | AminoAcid mode | 
| 4 | Temperature mode | 
| 5 | CStickNumber mode | 
| 6 | CStickAminoAcid mode | 
| 7 | CStickTemperature mode | 
| v | voice! | 
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| y | Density +0.1 | 
| h | Density -0.1 | 
| u | Density +1.0 | 
| j | Density -1.0 | 
| i | Density +10.0 | 
| k | Density -10.0 | 
| F | CentreTagの切り替え(ON, OFF) | 
操作モードの設定・取得
現在の#操作モードを返します。
extern operationMode operationModeGet(void);
現在の#操作モードをoperationModeに設定します。
extern void operationModeSet(operationMode);
光源
光源の設定
extern void lmolvieLightSet(void);
光源の位置を取得(index=0, 1)
extern GLfloat* get_LightPos(int index);
サウンド
Voice(未実装)
extern void lmolvieVoice(void);
サウンド(未実装)
extern void monoSound(float amplitude, float Hz);
境界線
境界線を描画します。(未実装)
extern void drawContour(contourLinesSet* contour);
スケールバー
スケールバーを切り替えます。(無し, 1nm, 5nm, 10nm)
extern void scaleBarSwitch();
molvieViewer
画面表示
extern void lmolvieViewerDisplay(void);
アイドル処理
処理なし
extern void lmolvieViewerIdle(void);
マウスイベント
クリック
処理なし
extern void lmolvieViewerMouse(int button, int state, int x, int y);
ドラッグ
extern void lmolvieViewerMouseMotion(int x, int y);
ドラッグ時のボタンpressedButtonに依った処理を行います。
| pressedButton | 処理 | 
|---|---|
| GLUT_LEFT_BUTTON | #中心回転 | 
| GLUT_MIDDLE_BUTTON | 処理なし | 
| GLUT_RIGHT_BUTTON | #視点回転 | 
マウス移動
処理なし
extern void lmolvieViewerMousePassiveMotion(int x, int y);
キーボードイベント
extern void lmolvieViewerKeyboard(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| c | C switchの切り替え(ON, mainChain, OFF) | 
| o | O switchの切り替え(ON, OFF) | 
| n | N switchの切り替え(ON, OFF) | 
| s | S switchの切り替え(ON, OFF) | 
| p | P switchの切り替え(ON, OFF) | 
| h | H switchの切り替え(ON, OFF) | 
| f | Fe switchの切り替え(ON, OFF) | 
| 0 | NoneAtom mode | 
| 1 | Atom mode | 
| 2 | Number mode | 
| 3 | AminoAcid mode | 
| 4 | Temperature mode | 
| 5 | CStickNumber mode | 
| 6 | CStickAminoAcid mode | 
| 7 | CStickTemperature mode | 
| 8 | DistanceFromTarget mode | 
| 9 | WireFrame mode | 
| ! | Chain mode | 
| v | voice! | 
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| F | CentreTagの切り替え(ON, OFF) | 
| b | 状態保存(未実装) | 
| g | 状態読込(未実装) | 
特殊キーイベント
extern void lmolvieViewerSpecial(int pushkey, int x, int y);
molvieMrcViewer
画面表示
extern void lmolvieMrcViewerDisplay(void);
マウスイベント
クリック
処理なし
extern void lmolvieMrcViewerMouse(int button, int state, int x, int y);
ドラッグ
extern void lmolvieMrcViewerMouseMotion(int x, int y);
ドラッグ時のボタンpressedButtonに依った処理を行います。
| pressedButton | 処理 | 
|---|---|
| GLUT_LEFT_BUTTON | #中心回転 | 
| GLUT_MIDDLE_BUTTON | 処理なし | 
| GLUT_RIGHT_BUTTON | #視点回転 | 
マウス移動
処理なし
extern void lmolvieMrcViewerMousePassiveMotion(int x, int y);
キーボードイベント
extern void lmolvieMrcViewerKeyboard(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| v | voice! | 
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| y | Density +0.1 | 
| h | Density -0.1 | 
| u | Density +1.0 | 
| j | Density -1.0 | 
| i | Density +10.0 | 
| k | Density -10.0 | 
| F | CentreTagの切り替え(ON, OFF) | 
molvieProjection
マウスイベント
クリック
処理なし
extern void lmolvieProjectionMouse(int button, int state, int x, int y);
ドラッグ
extern void lmolvieProjectionMouseMotion(int x, int y);
ドラッグ時のボタンpressedButtonに依った処理を行います。
| pressedButton | 処理 | 
|---|---|
| GLUT_LEFT_BUTTON | 物体回転(proteinRotateX, proteinRotateY) | 
| GLUT_MIDDLE_BUTTON | #中心移動 | 
| GLUT_RIGHT_BUTTON | #中心回転 | 
マウス移動
処理なし
extern void lmolvieProjectionMousePassiveMotion(int x, int y);
キーボードイベント
extern void lmolvieProjectionKeyboard(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| s | save PPM | 
| l | |
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| u | テクスチャのスケール+0.01 | 
| d | テクスチャのスケール-0.01 | 
| g | テクスチャのx座標+0.5 | 
| j | テクスチャのx座標-0.5 | 
| y | テクスチャのy座標+0.5 | 
| h | テクスチャのy座標-0.5 | 
| b | テクスチャのz座標+0.5 | 
| n | テクスチャのz座標-0.5 | 
| i | スケール+0.01 | 
| k | スケール-0.01 | 
| S | スケールバーの切り替え(無し, 1nm, 5nm, 10nm) | 
| p | Parallel mode | 
| R | 回転座標(x, y, z)の出力 | 
| X | 回転座標xを標準入力で取得 | 
| Y | 回転座標yを標準入力で取得 | 
| Z | 回転座標zを標準入力で取得 | 
molvieDock
画面表示
extern void lmolvieDockDisplay(void);
PDBファイルの描画
extern void displayMultiPDB1();
キーボードイベント
extern void lmolvieDockKeyboard(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| i | PDBデータの読み込み(loadPDB1) | 
| 0 | NoneAtom mode | 
| 1 | Atom mode | 
| 2 | Number mode | 
| 3 | AminoAcid mode | 
| 4 | Temperature mode | 
| 5 | CStickNumber mode | 
| 6 | CStickAminoAcid mode | 
| 7 | CStickTemperature mode | 
| c | Protein Change | 
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| F | CentreTagの切り替え(ON, OFF) | 
molvieFlight
画面表示
extern void lmolvieFlightDisplay(void);
アイドル処理
extern void lmolvieFlightIdle(void);
キーボードイベント
extern void lmolvieFlightKeyboard(unsigned char pushkey, int x, int y);
キーpushkeyによる処理を行います。
| pushkey | 処理 | 
|---|---|
| q | 終了 | 
| c | check! | 
| 0 | NoneAtom mode | 
| 1 | Atom mode | 
| 2 | Number mode | 
| 3 | AminoAcid mode | 
| 4 | Temperature mode | 
| 5 | CStickNumber mode | 
| 6 | CStickAminoAcid mode | 
| 7 | CStickTemperature mode | 
| v | voice! | 
| r | camera reset | 
| w | 中心に近づく | 
| e | 中心から離れる | 
| s | speed change | 
molvieTest
extern void lmolvieTest(void);
カメラ
中心回転
中心座標をangle[radian]だけ回転します。
extern void myCameraRotateX(GLdouble angle); extern void myCameraRotateY(GLdouble angle); extern void myCameraRotateZ(GLdouble angle);
視点回転
視点座標をangle[radian]だけ回転します。
extern void myCameraEyeRotateX(GLdouble angle); extern void myCameraEyeRotateY(GLdouble angle);
中心移動
中心座標をpanだけマイナスして移動します。
extern void myCameraTranslateX(GLdouble pan); extern void myCameraTranslateY(GLdouble pan); extern void myCameraTranslateZ(GLdouble pan);
視点移動
視点座標を移動します。
extern void moveMyCamera(double movedistance);
movedistanceにより移動方向を選択できます。(移動距離は中心と視点間の1/50)
| movedistance | 移動方向 | 
|---|---|
| 1.0 | 中心に近づく | 
| それ以外 | 中心から離れる | 
座標設定
視点・中心座標をPDBファイルの中心(__pdbCenter)に合わせます。
extern void resetMyCamera();
現在の視点座標を中心座標に設定します。(各座標間が元の1/100となる)
extern void setDriveMyCamera();
視点・中心座標をPDBファイルの中心(__pdbCenter)に合わせます。(各座標間が元の1/100となる)
extern void resetDriveMyCamera();
カメラ情報取得
cameraInfo型のカメラ情報をポインタとして返します。
extern cameraInfo* getMyCamera(void);
Up再計算
Upの長さが1になるように再計算します。
extern void upCalc();
CentreTagの切り替え(ON, OFF)
extern void setCameraCentreTag(int tag);
PDB関連
ファイルfptInからPDBを読み込んで、pdbInへ格納します。
extern void lmolviePDBread(FILE* fptIn);
pdbInを返します。
extern pdbFile* get_pdb(void);
get_pdbで取得したPDBを描画します。
extern GLboolean myDisplayListMakeAtom(void);