OSDN Git Service

Version browse in switch, export, new branch/tag and merge dialogs
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / RevisionGraph / StandardNodeSizeAssignment.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2008 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 \r
20 #include "StdAfx.h"\r
21 #include "StandardNodeSizeAssignment.h"\r
22 #include "StandardLayout.h"\r
23 #include "VisibleGraphNode.h"\r
24 \r
25 // construction\r
26 \r
27 CStandardNodeSizeAssignment::CStandardNodeSizeAssignment \r
28     ( CRevisionGraphOptionList& list)\r
29     : CRevisionGraphOptionImpl<ILayoutOption, 100, 0> (list)\r
30 {\r
31 }\r
32 \r
33 // cast @a layout pointer to the respective modification\r
34 // interface and write the data.\r
35 \r
36 void CStandardNodeSizeAssignment::ApplyTo (IRevisionGraphLayout* layout)\r
37 {\r
38     // we need access to actual data\r
39 \r
40     IStandardLayoutNodeAccess* nodeAccess \r
41         = dynamic_cast<IStandardLayoutNodeAccess*>(layout);\r
42     if (nodeAccess == NULL) \r
43         return;\r
44 \r
45     // run\r
46 \r
47     for (index_t i = 0, count = nodeAccess->GetNodeCount(); i < count; ++i)\r
48     {\r
49         CStandardLayoutNodeInfo* node = nodeAccess->GetNode(i);\r
50 \r
51         node->requiresPath =   (node->previousInBranch == NULL)\r
52                             || (   node->previousInBranch->node->GetPath() \r
53                                 != node->node->GetPath());\r
54 \r
55         int hight = 28;\r
56         if (node->requiresPath)\r
57             hight += 3 + node->node->GetPath().GetDepth() * 21;\r
58 \r
59         node->requiredSize = CSize (200, hight);\r
60         node->rect = CRect (0, 0, 200, hight);\r
61     }\r
62 }\r