FSN#28477 Versie 3.12: node_num niet meer een globale static maar altijd bij 0 beginnen te tellen.

Bij dezelfde input krijg je nu een 100% identieke dwf

svn path=/Slnkdwf/trunk/; revision=20324
This commit is contained in:
Jos Groot Lipman
2014-01-14 11:36:58 +00:00
parent 888f6e0e3d
commit 03e397e316
7 changed files with 17 additions and 14 deletions

View File

@@ -100,7 +100,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Forceer correcte _TIME_"
CommandLine="if exist d:\Temp\Slnkdwf\SLNKDWFCom\Release\About.obj del d:\Temp\Slnkdwf\SLNKDWFCom\Release\About.obj&#x0D;&#x0A;"
CommandLine="if exist $(TEMP)\Slnkdwf\SLNKDWFCom\Release\About.obj del $(TEMP)\Slnkdwf\SLNKDWFCom\Release\About.obj&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="NOTEXIST"
/>

View File

@@ -1,6 +1,6 @@
// Zorg dat versies alfabetisch altijd op elkaar volgen!
#define SLNK_MAJOR_VERSION 3
#define SLNK_MINOR_VERSION 11
#define SLNK_MINOR_VERSION 12
#define SLNK_BUILD_VERSION 0
// Define resource strings

View File

@@ -29,7 +29,9 @@ CSLNKSymbolImpl::CSLNKSymbolImpl(double dwgX, double dwgY, WT_Units units)
}
WT_Result CSLNKSymbolImpl::serialize (WT_File & file, WT_Units & units,
CSLNKSymbolDefinition *symbdef, double hintScale,
CSLNKSymbolDefinition *symbdef,
WT_Integer32 node_num,
double hintScale,
BOOL forFind, double scale)
{
ATLASSERT(symbdef != NULL);
@@ -164,9 +166,9 @@ WT_Result CSLNKSymbolImpl::serialize (WT_File & file, WT_Units & units,
file.desired_rendition().font() = file.rendition().font() = WT_Font();
file.heuristics().set_apply_transform(WD_False); // Hebben we al rechtstreeks op de contour gedaan
m_SLNKContour.serialize(file, true, forFind, scale);
m_SLNKContour.serialize(file, node_num, true, forFind, scale);
// Nog een keer voor een mogelijke outline
m_SLNKContour.serialize(file, false, forFind, scale);
m_SLNKContour.serialize(file, node_num+1, false, forFind, scale);
// En transform weer terug
file.heuristics().set_transform(wasTransform);

View File

@@ -12,6 +12,7 @@ public:
WT_Result serialize (WT_File & file, WT_Units & units,
CSLNKSymbolDefinition *symbdef,
WT_Integer32 node_num,
double hintScale, BOOL forFind,
double scale);
WT_Result calculateBoundary (myWT_File *wtFile);

View File

@@ -765,7 +765,8 @@ bool CWhipFile::GenerateSymbols(myWT_File &my_file)
CSLNKSymbolImpl *symbol= m_SLNKSymbols[i];
if (symbol->m_symbolName == "" || !m_SLNKSymbolDefinitions.Lookup(symbol->m_symbolName))
symbol->serialize(my_file, m_contunits, NULL,
m_hintScale, m_forFind, scale);
m_SLNKContouren.GetCount() + 2*i, // node_num doortellen. *2 omdat we twee contouren doen
m_hintScale, m_forFind, scale);
else
{
#ifdef _DEBUG
@@ -775,7 +776,8 @@ bool CWhipFile::GenerateSymbols(myWT_File &my_file)
cmt.serialize(my_file);
#endif
symbol->serialize(my_file, m_contunits, m_SLNKSymbolDefinitions[symbol->m_symbolName],
m_hintScale, m_forFind, scale);
m_SLNKContouren.GetCount() + 2*i, // node_num doortellen *2 omdat we twee contouren doen
m_hintScale, m_forFind, scale);
}
}
return true;
@@ -868,7 +870,8 @@ bool CWhipFile::GenerateContouren(WT_File &my_planfile, myWT_File &my_file,
for (size_t i=0; i<m_SLNKContouren.GetCount(); i++)
{
CSLNKContourImpl *contour= m_SLNKContouren[i];
contour->serialize(my_file, solidOnly, m_forFind, scale);
// i ook gebruiken als node_num, eigenlijk initialiseren op laatste van planfile
contour->serialize(my_file, i, solidOnly, m_forFind, scale);
}
my_file.desired_rendition().object_node() = current_node;

View File

@@ -8,8 +8,6 @@
#define PALETTE_RED 1 // Color in the default colormap is red.
/*static*/ WT_Integer32 CSLNKContourImpl::m_next_node_num = 0; // Eigenlijk initialiseren op laatste van planfile
// Constructor voor symboldef's en symbolen
// Hier weten we vaak de contour polygon nog niet (of kunnen die pas later bepalen/
// invullen met transformatie)
@@ -639,7 +637,7 @@ CSize CSLNKContourImpl::DrawOneLabel(WT_File &my_file,
Als solidOnly dan alleen als alpha==255 en een label (wel herkend)
****************************************************************************/
WT_Result CSLNKContourImpl::serialize(WT_File & file, BOOL solidOnly, BOOL forFind, double scale)
WT_Result CSLNKContourImpl::serialize(WT_File & file, WT_Integer32 node_num, BOOL solidOnly, BOOL forFind, double scale)
{
if (!m_fromSymbol && m_contLabel == "" && !solidOnly) // Alleen bij tweede slag
{ // May very well be a textobject itself, just emit it
@@ -659,7 +657,7 @@ WT_Result CSLNKContourImpl::serialize(WT_File & file, BOOL solidOnly, BOOL forFi
(m_Color.rgba().m_rgb.a<255 && !solidOnly))
{
// Start a node for 'everything'. Dit is wat we concreet teruggeven bij klikken in de tekening
WT_Object_Node my_node(file,m_next_node_num++,m_Key);
WT_Object_Node my_node(file, node_num, m_Key);
file.desired_rendition().object_node() = my_node;
//char s[256];

View File

@@ -45,7 +45,7 @@ public:
double m_LabelRotation; // Label rotation, around Centroid!
double m_Fontheight; // Font hoogte in mm
WT_Result serialize(WT_File & file, BOOL solidOnly, BOOL forFind, double scale);
WT_Result serialize(WT_File & file, WT_Integer32 node_num, BOOL solidOnly, BOOL forFind, double scale);
static BOOL PointInPolygon(const WT_Logical_Point pt, const WT_Point_Set &ps);
static BOOL PointInPolygon(const CPoint pt, const CPoint *ps, int size);
static void EdgeAngle(const WT_Logical_Point pt, const WT_Point_Set &ps, double &EdgeAngle, double &EdgeDistance);
@@ -61,5 +61,4 @@ public:
HDC myDC, int width=-2);
void AddPoint(double pValX, double pValY);
void AddPoint(WT_Logical_Point pt);
static WT_Integer32 m_next_node_num;
};