• R/O
  • SSH
  • HTTPS

marathon: コミット


コミットメタ情報

リビジョン278 (tree)
日時2007-05-01 00:16:55
作者hogepiyo

ログメッセージ

*** empty log message ***

変更サマリ

差分

--- marathon/trunk/MapEditorOne/src/MapEditorSDI.h (revision 277)
+++ marathon/trunk/MapEditorOne/src/MapEditorSDI.h (revision 278)
@@ -304,9 +304,11 @@
304304 vector<HBITMAP> bitmapList;
305305
306306 //select tool type
307+ //選択ツールタイプ
307308 int selectingToolType;
308309
309310 //show / hide polygons, lines. points
311+ //表示している高さの範囲。選択にも反映される
310312 int viewHeightMax;
311313 int viewHeightMin;
312314 bool isRevealHiddenLines;
--- marathon/trunk/MapEditorOne/src/MapEditorSDIView.cpp (revision 277)
+++ marathon/trunk/MapEditorOne/src/MapEditorSDIView.cpp (revision 278)
@@ -141,6 +141,9 @@
141141 midiumPen.DeleteObject();
142142 }
143143
144+/**
145+ ポリゴン生成
146+*/
144147 void CMapEditorSDIView::drawPolygons(CDC *cdc)
145148 {
146149 CBrush nullBrush, netBrush;
@@ -197,6 +200,9 @@
197200 points[j].x = viewPoint[0];
198201 points[j].y = viewPoint[1];
199202 }
203+ //ポリゴンの整合性を確かめる
204+ bool validity = isValidPolygon(index);
205+
200206 CBrush brush;
201207 int type = 0;
202208 switch(theApp.getEditMode()){
@@ -294,6 +300,10 @@
294300 hiddenLinePen.DeleteObject();
295301 }
296302
303+/**
304+ 点の表示
305+ @param cdc デバイスコンテキスト
306+*/
297307 void CMapEditorSDIView::drawPoints(CDC *cdc)
298308 {
299309 CPen pen, selectedPen;
@@ -524,6 +534,12 @@
524534 cdc->SetTextColor(RGB(0,0,0));
525535 }
526536
537+//////////////////////////////////////////////////////////////////////////////
538+//////////////////////////////////////////////////////////////////////////////
539+//////////////////////////////////////////////////////////////////////////////
540+/**
541+ 描画全体
542+*/
527543 void CMapEditorSDIView::OnDraw(CDC* pDC)
528544 {
529545 CMapEditorSDIDoc* pDoc = GetDocument();
@@ -663,6 +679,12 @@
663679 // CMapEditorSDIView メッセージ ハンドラ
664680
665681 //ホイール
682+/**
683+ ホイールイベント
684+ @param nFlags 同時になにをやっているか(キーなど)
685+ @param zDelta ズーム変化量の幅
686+ @param pt ホイールを回したときのマウスポイント
687+*/
666688 BOOL CMapEditorSDIView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
667689 {
668690 static short oldZDelta = zDelta;
--- marathon/trunk/MapEditorOne/src/MapEditorSDIView_Event.cpp (revision 277)
+++ marathon/trunk/MapEditorOne/src/MapEditorSDIView_Event.cpp (revision 278)
@@ -6,7 +6,16 @@
66 #include ".\mapeditorsdiview.h"
77 #include "SelectLevelDialog.h"
88
9-
9+/**
10+ マウス座標が点に近いかどうかを調べて選択情報に設定
11+ @param mousePoint view座標系のマウスポイント座標
12+ @param offsetViewX view座標系のズレ補正
13+ @param offsetViewY view座標系のズレ補正
14+ @param offsetWorldX world座標系のズレ補正
15+ @param offsetWorldY world座標系のズレ補正
16+ @param div ズーム
17+ @param distance 距離の閾値。これ以下なら選択
18+*/
1019 static void checkSelectPoint(POINT& mousePoint,
1120 int offsetViewX, int offsetViewY,
1221 int offsetWorldX, int offsetWorldY,
@@ -32,6 +41,9 @@
3241 }
3342 }
3443
44+/**
45+ 選択開始位置を記憶
46+*/
3547 void CMapEditorSDIView::setStartPointForSelectGroup(int px, int py){
3648 theApp.selectStartPoint.x = px;
3749 theApp.selectStartPoint.y = py;
@@ -46,8 +58,10 @@
4658 int OFFSET_X_VIEW = theApp.offset.x;
4759 int OFFSET_Y_VIEW = theApp.offset.y;
4860 int DIV = theApp.zoomDivision;
61+
4962 if(theApp.selectingToolType == TI_ARROW){
5063 //selecting tool = TI_ARROW
64+ //矢印ツール時
5165
5266 if(/*!(nFlags & MK_SHIFT) && */!(nFlags & MK_CONTROL)){
5367 //コントロールキーを押さずに
@@ -299,7 +313,11 @@
299313 delete lines;
300314 }else if(theApp.selectingToolType == TI_HAND){
301315 //全体を移動
316+ //D&Dの部分で実装済み
317+
302318 }else if( theApp.selectingToolType == TI_LINE){
319+ //線引きツール
320+
303321 #ifdef MAP_VIEWER
304322 #else
305323 if(nFlags & MK_LBUTTON){
@@ -322,6 +340,7 @@
322340 }
323341 }
324342 #endif
343+
325344 }else if(theApp.selectingToolType == TI_MAGNIFY){
326345 //zoom in/out
327346 if(nFlags & MK_CONTROL){
@@ -332,7 +351,9 @@
332351 //zoom in
333352 OnZoomIn();
334353 }
354+
335355 }else if(theApp.selectingToolType == TI_SKULL){
356+ //オブジェクト配置ツール時
336357 #ifdef MAP_VIEWER
337358 #else
338359 struct world_point2d world_point = getWorldPoint2DFromViewPoint(point.x, point.y);
@@ -359,7 +380,9 @@
359380 }
360381 }
361382 #endif
383+
362384 }else if(theApp.selectingToolType == TI_TEXT){
385+ //テキスト入力ツール
363386 #ifdef MAP_VIEWER
364387 #else
365388 //add annotation
@@ -383,6 +406,7 @@
383406 this->SetFocus();
384407 #endif
385408 }else if(theApp.selectingToolType == TI_POLYGON){
409+ //規定ポリゴン作成ツール
386410 #ifdef MAP_VIEWER
387411 #else
388412 //set start point
@@ -391,11 +415,16 @@
391415 }
392416 }
393417
418+/**
419+ ポリゴンを選択したかどうか判断します
420+*/
394421 void checkPolygonSelect(UINT nFlags, CPoint point)
395422 {
396423 theApp.selectDatas.clear();
397424
398425 struct world_point2d world_point = getWorldPoint2DFromViewPoint(point.x, point.y);
426+
427+ //ポリゴンの中にマウスポインタが入っているか
399428 int polygonIndex = getPolygonIdPointIn(world_point);
400429 if(polygonIndex != NONE){
401430 polygon_data *polygon = &PolygonList[polygonIndex];
@@ -616,6 +645,8 @@
616645 theApp.isPressLButtonWithCtrl = false;
617646
618647 if(theApp.selectingToolType == TI_ARROW){
648+ //矢印ツール
649+
619650 bool okSelect = false;
620651 if(theApp.selectDatas.isSelectOneObject()){
621652 //オブジェクト情報更新
@@ -623,6 +654,7 @@
623654 }else if(theApp.selectDatas.isSelectOnePoint()){
624655 }else if(theApp.selectDatas.isSelectOneLine()){
625656 }else if(theApp.selectDatas.isSelectOnePolygon()){
657+ //ポリゴン情報更新
626658 theApp.polygonPropertyDialog->setupDialog(theApp.selectDatas.getSelPolygons()->at(0).index);
627659 }
628660 if(theApp.isSelectingGroup){
--- marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Form1.Designer.cs (nonexistent)
+++ marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Form1.Designer.cs (revision 278)
@@ -0,0 +1,98 @@
1+namespace TestPolygon
2+{
3+ partial class Form1
4+ {
5+ /// <summary>
6+ /// 必要なデザイナ変数です。
7+ /// </summary>
8+ private System.ComponentModel.IContainer components = null;
9+
10+ /// <summary>
11+ /// 使用中のリソースをすべてクリーンアップします。
12+ /// </summary>
13+ /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param>
14+ protected override void Dispose(bool disposing)
15+ {
16+ if (disposing && (components != null))
17+ {
18+ components.Dispose();
19+ }
20+ base.Dispose(disposing);
21+ }
22+
23+ #region Windows フォーム デザイナで生成されたコード
24+
25+ /// <summary>
26+ /// デザイナ サポートに必要なメソッドです。このメソッドの内容を
27+ /// コード エディタで変更しないでください。
28+ /// </summary>
29+ private void InitializeComponent()
30+ {
31+ this.textBox1 = new System.Windows.Forms.TextBox();
32+ this.button1 = new System.Windows.Forms.Button();
33+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
34+ this.textBox2 = new System.Windows.Forms.TextBox();
35+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
36+ this.SuspendLayout();
37+ //
38+ // textBox1
39+ //
40+ this.textBox1.Location = new System.Drawing.Point(12, 12);
41+ this.textBox1.Name = "textBox1";
42+ this.textBox1.Size = new System.Drawing.Size(100, 19);
43+ this.textBox1.TabIndex = 1;
44+ //
45+ // button1
46+ //
47+ this.button1.Location = new System.Drawing.Point(13, 38);
48+ this.button1.Name = "button1";
49+ this.button1.Size = new System.Drawing.Size(155, 23);
50+ this.button1.TabIndex = 2;
51+ this.button1.Text = "Do something";
52+ this.button1.UseVisualStyleBackColor = true;
53+ this.button1.Click += new System.EventHandler(this.button1_Click);
54+ //
55+ // pictureBox1
56+ //
57+ this.pictureBox1.Location = new System.Drawing.Point(260, 67);
58+ this.pictureBox1.Name = "pictureBox1";
59+ this.pictureBox1.Size = new System.Drawing.Size(231, 196);
60+ this.pictureBox1.TabIndex = 3;
61+ this.pictureBox1.TabStop = false;
62+ //
63+ // textBox2
64+ //
65+ this.textBox2.AcceptsReturn = true;
66+ this.textBox2.Location = new System.Drawing.Point(13, 68);
67+ this.textBox2.Multiline = true;
68+ this.textBox2.Name = "textBox2";
69+ this.textBox2.ScrollBars = System.Windows.Forms.ScrollBars.Both;
70+ this.textBox2.Size = new System.Drawing.Size(241, 194);
71+ this.textBox2.TabIndex = 4;
72+ //
73+ // Form1
74+ //
75+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
76+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
77+ this.ClientSize = new System.Drawing.Size(503, 274);
78+ this.Controls.Add(this.textBox2);
79+ this.Controls.Add(this.pictureBox1);
80+ this.Controls.Add(this.button1);
81+ this.Controls.Add(this.textBox1);
82+ this.Name = "Form1";
83+ this.Text = "Form1";
84+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
85+ this.ResumeLayout(false);
86+ this.PerformLayout();
87+
88+ }
89+
90+ #endregion
91+
92+ private System.Windows.Forms.TextBox textBox1;
93+ private System.Windows.Forms.Button button1;
94+ private System.Windows.Forms.PictureBox pictureBox1;
95+ private System.Windows.Forms.TextBox textBox2;
96+ }
97+}
98+
--- marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Form1.cs (nonexistent)
+++ marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Form1.cs (revision 278)
@@ -0,0 +1,25 @@
1+using System;
2+using System.Collections.Generic;
3+using System.ComponentModel;
4+using System.Data;
5+using System.Drawing;
6+using System.Text;
7+using System.Windows.Forms;
8+
9+namespace TestPolygon
10+{
11+ public partial class Form1 : Form
12+ {
13+ public Form1()
14+ {
15+ InitializeComponent();
16+ }
17+
18+ const String RETURN_CODE = "\r\n";
19+ private void button1_Click(object sender, EventArgs e)
20+ {
21+ //ボタンをクリックしたらいろいろする
22+ textBox2.Text = "hogepiyo";
23+ }
24+ }
25+}
\ No newline at end of file
--- marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/obj/TestPolygon.csproj.FileList.txt (nonexistent)
+++ marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/obj/TestPolygon.csproj.FileList.txt (revision 278)
@@ -0,0 +1,16 @@
1+bin\Release\TestPolygon.exe
2+bin\Release\TestPolygon.pdb
3+obj\Release\ResolveAssemblyReference.cache
4+obj\Release\TestPolygon.Form1.resources
5+obj\Release\TestPolygon.Properties.Resources.resources
6+obj\Release\TestPolygon.csproj.GenerateResource.Cache
7+obj\Release\TestPolygon.exe
8+obj\Release\TestPolygon.pdb
9+bin\Debug\TestPolygon.exe
10+bin\Debug\TestPolygon.pdb
11+obj\Debug\ResolveAssemblyReference.cache
12+obj\Debug\TestPolygon.Form1.resources
13+obj\Debug\TestPolygon.Properties.Resources.resources
14+obj\Debug\TestPolygon.csproj.GenerateResource.Cache
15+obj\Debug\TestPolygon.exe
16+obj\Debug\TestPolygon.pdb
--- marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Program.cs (nonexistent)
+++ marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Program.cs (revision 278)
@@ -0,0 +1,20 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Windows.Forms;
4+
5+namespace TestPolygon
6+{
7+ static class Program
8+ {
9+ /// <summary>
10+ /// アプリケーションのメイン エントリ ポイントです。
11+ /// </summary>
12+ [STAThread]
13+ static void Main()
14+ {
15+ Application.EnableVisualStyles();
16+ Application.SetCompatibleTextRenderingDefault(false);
17+ Application.Run(new Form1());
18+ }
19+ }
20+}
\ No newline at end of file
--- marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Properties/AssemblyInfo.cs (nonexistent)
+++ marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Properties/AssemblyInfo.cs (revision 278)
@@ -0,0 +1,33 @@
1+using System.Reflection;
2+using System.Runtime.CompilerServices;
3+using System.Runtime.InteropServices;
4+
5+// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
6+// アセンブリに関連付けられている情報を変更するには、
7+// これらの属性値を変更してください。
8+[assembly: AssemblyTitle("TestPolygon")]
9+[assembly: AssemblyDescription("")]
10+[assembly: AssemblyConfiguration("")]
11+[assembly: AssemblyCompany("")]
12+[assembly: AssemblyProduct("TestPolygon")]
13+[assembly: AssemblyCopyright("Copyright (C) 2007")]
14+[assembly: AssemblyTrademark("")]
15+[assembly: AssemblyCulture("")]
16+
17+// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントには
18+// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、
19+// その型の ComVisible 属性を true に設定してください。
20+[assembly: ComVisible(false)]
21+
22+// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です
23+[assembly: Guid("6c1a34a2-ab17-4400-999e-df92a85134ef")]
24+
25+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
26+//
27+// Major Version
28+// Minor Version
29+// Build Number
30+// Revision
31+//
32+[assembly: AssemblyVersion("1.0.0.0")]
33+[assembly: AssemblyFileVersion("1.0.0.0")]
--- marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Properties/Settings.Designer.cs (nonexistent)
+++ marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Properties/Settings.Designer.cs (revision 278)
@@ -0,0 +1,30 @@
1+//------------------------------------------------------------------------------
2+// <auto-generated>
3+// This code was generated by a tool.
4+// Runtime Version:2.0.50727.42
5+//
6+// Changes to this file may cause incorrect behavior and will be lost if
7+// the code is regenerated.
8+// </auto-generated>
9+//------------------------------------------------------------------------------
10+
11+namespace TestPolygon.Properties
12+{
13+
14+
15+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
17+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18+ {
19+
20+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21+
22+ public static Settings Default
23+ {
24+ get
25+ {
26+ return defaultInstance;
27+ }
28+ }
29+ }
30+}
--- marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Properties/Resources.Designer.cs (nonexistent)
+++ marathon/trunk/MapEditorOne/build/VisualC/VC8/MapEditorOne/TestPolygon/Properties/Resources.Designer.cs (revision 278)
@@ -0,0 +1,71 @@
1+//------------------------------------------------------------------------------
2+// <auto-generated>
3+// このコードはツールによって生成されました。
4+// ランタイム バージョン:2.0.50727.42
5+//
6+// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
7+// コードが再生成されるときに損失したりします。
8+// </auto-generated>
9+//------------------------------------------------------------------------------
10+
11+namespace TestPolygon.Properties
12+{
13+
14+
15+ /// <summary>
16+ /// ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。
17+ /// </summary>
18+ // このクラスは StronglyTypedResourceBuilder クラスが ResGen
19+ // または Visual Studio のようなツールを使用して自動生成されました。
20+ // メンバを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に
21+ // ResGen を実行し直すか、または VS プロジェクトをビルドし直します。
22+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
23+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25+ internal class Resources
26+ {
27+
28+ private static global::System.Resources.ResourceManager resourceMan;
29+
30+ private static global::System.Globalization.CultureInfo resourceCulture;
31+
32+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33+ internal Resources()
34+ {
35+ }
36+
37+ /// <summary>
38+ /// このクラスに使用される、キャッシュされた ResourceManager のインスタンスを返します。
39+ /// </summary>
40+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41+ internal static global::System.Resources.ResourceManager ResourceManager
42+ {
43+ get
44+ {
45+ if ((resourceMan == null))
46+ {
47+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TestPolygon.Properties.Resources", typeof(Resources).Assembly);
48+ resourceMan = temp;
49+ }
50+ return resourceMan;
51+ }
52+ }
53+
54+ /// <summary>
55+ /// 厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、
56+ /// 現在のスレッドの CurrentUICulture プロパティをオーバーライドします。
57+ /// </summary>
58+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59+ internal static global::System.Globalization.CultureInfo Culture
60+ {
61+ get
62+ {
63+ return resourceCulture;
64+ }
65+ set
66+ {
67+ resourceCulture = value;
68+ }
69+ }
70+ }
71+}
--- marathon/trunk/HPLLib/HPLMapTool.cpp (revision 277)
+++ marathon/trunk/HPLLib/HPLMapTool.cpp (revision 278)
@@ -233,3 +233,45 @@
233233 //no selection
234234 return false;
235235 }
236+
237+//線の回り方が時計回りか、反時計回りか
238+typename PolygonRotation{
239+ enum RotationType{
240+ Clockwise,
241+ Counterclockwise,
242+
243+ MAX_POLYGON_ROTATION_TYPES
244+ };
245+};
246+
247+/**
248+ ポリゴンが存在として正しいかどうかを判定します
249+ @param index index of polygon which is checked 検査対象のポリゴンインデックス
250+*/
251+bool hpl::aleph::map::isValidPolygon(int index)
252+{
253+ //TODO
254+ //ポリゴン情報を取得します
255+ polygon_data *polygon = get_polygon_data(index);
256+
257+ //ポリゴン情報が無い
258+ if(polygon == null){
259+ return false;
260+ }
261+
262+ //ポリゴンに所属する線を取得します
263+ int vertexCount = polygon->vertex_count;
264+ int startPointIndex = polygon->endpoint_indexes[0];
265+ int pointA, pointB, pointC;
266+
267+ //時計回りか、反時計回りか
268+ PolygonRotation::RotationType polygonRotationType = PolygonRotation::Clockwise;
269+
270+ //点iと点i+1を含む線をAB, 点i+1と点i+2を含む線をBCとする。
271+ //最初の線[点0,点1]と線[点1,点2]の角度から、時計回りか、反時計回りかを判定する
272+ pointA = startPointIndex;
273+ pointB = polygon->endpoint_indexes[1];
274+ pointC = polygon->endpoint_indexes[2];
275+
276+ return false;
277+}
--- marathon/trunk/HPLLib/HPLMapTool.h (revision 277)
+++ marathon/trunk/HPLLib/HPLMapTool.h (revision 278)
@@ -122,6 +122,23 @@
122122 hpl::aleph::map::HPLSelectData* selectInfo,
123123 int heightMax, int heightMin, int div);
124124
125+ ///////////////////////////////////////////////////////////////////////////////
126+ ////// Polygon ////////////////////////////////////////////////////////////////
127+
128+ /**
129+ ポリゴンが存在として正しいかどうかを判定します
130+ @param index index of polygon which is checked 検査対象のポリゴンインデックス
131+ */
132+ bool isValidPolygon(int index);
133+
134+ /**
135+ ポリゴンをセットアップします
136+ 具体的には、
137+ ・点の順番、線の順番を時計回りに整えます
138+ ・Sideデータ等を設定します
139+ ・
140+ */
141+ //void setupPolygon(int index);
125142 };
126143 };
127144 };
旧リポジトリブラウザで表示