#ifndef __JBXL_CPP_WINDOW_H_ #define __JBXL_CPP_WINDOW_H_ /** グラフィック用ワールド座標系サポートヘッダ Window.h v2.1 依存関係 #include "Graph.h" */ #include "Graph.h" // namespace jbxl { /* template void wSetPixel(MSGraph vp, double x, double y, int cc) template T wGetPixel(MSGraph vp, double x, double y) template void wLine(MSGraph vp, double x1, double y1, double x2, double y2, int cc) template void wDraw(MSGraph* vp, double x, double y, int cc) template void wDraw_rel(MSGraph* vp, double x, double y, int cc) */ /** template void wSetPixel(MSGraph vp, double x, double y, int cc) 機能: ワールド座標系に点を打つ. 引数: vp -- 操作対象のグラフィックデータ. x -- 点の x座標(ワールド座標系). y -- 点の y座標(ワールド座標系). cc -- 点の輝度値. 戻り値:なし. */ template void wSetPixel(MSGraph vp, double x, double y, int cc) { int i = (int)((x - vp.wZeroX)*vp.wRateX + 0.5); int j = (int)((vp.wZeroY - y)*vp.wRateY + 0.5); vp.point(i,j) = (T)cc; } /** template T wGetPixel(MSGraph vp, double x, double y) 機能: ワールド座標系の点のデータを得る. 引数: vp -- 操作対象のグラフィックデータ. x -- 点の x座標(ワールド座標系). y -- 点の y座標(ワールド座標系). 戻り値: -- 点の輝度値. */ template T wGetPixel(MSGraph vp, double x, double y) { int i = (int)((x - vp.wZeroX)*vp.wRateX + 0.5); int j = (int)((vp.wZeroY - y)*vp.wRateY + 0.5); return vp.point(i, j); } /** template void wLine(MSGraph vp, double x1, double y1, double x2, double y2, int cc) 機能: ワールド座標系に線を引く. 引数: vp -- 操作対象のグラフィックデータ. x1 -- 線の始点の x座標(ワールド座標系). y1 -- 線の始点の y座標(ワールド座標系). x2 -- 線の終点の x座標(ワールド座標系). y2 -- 線の終点の y座標(ワールド座標系). cc -- 線の輝度値. 戻り値:なし. */ template void wLine(MSGraph vp, double x1, double y1, double x2, double y2, int cc) { int i1, j1, i2, j2; i1 = (int)((x1 - vp.wZeroX)*vp.wRateX + 0.5); i2 = (int)((x2 - vp.wZeroX)*vp.wRateX + 0.5); j1 = (int)((vp.wZeroY - y1)*vp.wRateY + 0.5); j2 = (int)((vp.wZeroY - y2)*vp.wRateY + 0.5); MSGraph_Line(vp, i1, j1, i2, j2, cc); } /** template void wDraw(MSGraph* vp, double x, double y, int cc) 機能: ワールド座標系で現地点から指定した地点へ線を引く. 指定した地点が現地点となる. 引数: vp -- 操作対象のグラフィックデータ. x -- 線の終点の x座標(ワールド座標系). y -- 線の終点の y座標(ワールド座標系). cc -- 線の輝度値. 戻り値:なし. */ template void wDraw(MSGraph* vp, double x, double y, int cc) { wLine(vp, vp->wNowX, vp->wNowY, x, y, cc); vp->wMove(x, y); } /** template void wDraw_rel(MSGraph* vp, double x, double y, int cc) 機能: ワールド座標系で現地点を起点として相対的に線を引く. 線の終点が現地点となる. 引数: vp -- 操作対象のグラフィックデータ. x -- 現地点から x方向への移動距離(ワールド座標系). y -- 現地点から x方向への移動距離(ワールド座標系). cc -- 線の輝度値. 戻り値:なし. */ template void wDraw_rel(MSGraph* vp, double x, double y, int cc) { double x2 = vp->wNowX + x; double y2 = vp->wNowY + y; wLine(*vp, vp->wNowX, vp->wNowY, x2, y2, cc); vp->wMove(x2, y2); } } // namespace #endif