FMHN#67510 ARC ondersteuning via instelling minmergedistance

svn path=/Slnkdwf/trunk/; revision=52702
This commit is contained in:
Jos Groot Lipman
2021-08-16 10:02:57 +00:00
parent e00e2b3b5e
commit 96511e3611
6 changed files with 25 additions and 8 deletions

View File

@@ -165,10 +165,7 @@
<Culture>0x0409</Culture>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<PreLinkEvent>
<Message>not Unloading IIS...</Message>
<Command>rem UnloadIIS.bat</Command>
</PreLinkEvent>
<PreLinkEvent />
<Link>
<AdditionalDependencies>SLNKDWFStaticRW.lib;Secur32.lib;bblib.lib;qrcode.lib;w3dtk.1.7.1555.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(DWFTKPATH)\lib\x64\static\$(Configuration)\vc14.0;.\CxImage\;..\lib\x64\$(Configuration)\;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

View File

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

View File

@@ -514,6 +514,10 @@ void arc2poly(WT_Logical_Point builder[], int &builder_len,
double radius = outlineEllipse.major();
int arcsteps = myRound(abs (er - sr) / TWO_PI * 16); // 16 segmenten voor een hele cirkel
if (COUNT_OF(builder) < builder_len + arcsteps) // overflow
return;
for (int i = 1; i < arcsteps; i++)
builder[builder_len++] = radiuspoint(outlineEllipse.position(), radius, sr, er, ((double) i) / arcsteps);
}
@@ -527,6 +531,12 @@ WT_Result CWhipFile::my_process_outlineEllipse(WT_Outline_Ellipse & outlineEllip
if (deze->m_minMergeDistance < 0)
return WT_Result::Success; // We doen niet aan builden
if (COUNT_OF(deze->m_builder) < deze->m_builder_len + 5) // overflow
{
deze->m_builder_len = 0; // reset builder
return WT_Result::Success;
}
WT_Units units = fixUnits(file.rendition().viewport().viewport_units());
WT_Point3D dwgPt = units.transform(outlineEllipse.position());
@@ -621,6 +631,11 @@ WT_Result CWhipFile::my_process_polyline(WT_Polyline & polyline, WT_File & file)
if (!pointnearend(deze, units, polyline.points()[0])) //
deze->m_builder_len = 0;
if (COUNT_OF(deze->m_builder) < deze->m_builder_len + polyline.count()) // overflow
{
deze->m_builder_len = 0; // reset builder
}
if (deze->m_builder_len == 0 || pointnearend(deze, units, polyline.points()[0]))
{
for (int i = deze->m_builder_len == 0 ? 0 : 1; i < polyline.count(); i++) // eerste eventueel overslaan, die matchte tenslotte

View File

@@ -89,7 +89,7 @@ private:
long m_vdpi;
WT_View m_view; // Initial view
WT_Logical_Point m_builder[1000]; // om lijnstukken aan elkaar te plakken
WT_Logical_Point m_builder[1000]; // om lijnstukken aan elkaar te plakken. 1000 lijkt me genoeg
int m_builder_len;
HRESULT ProcessContouren();

View File

@@ -6,6 +6,8 @@ void myDoTRACE(LPCTSTR lpszFormat, ...);
#define myTRACE 1 ? (void)0 : myDoTRACE
#endif
#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
long myRound(double const &x);
const CString myGetLastErrorMsg();

View File

@@ -1,3 +1,6 @@
V4.25 16-08-2021
- FMHN#67510 ARC ondersteuning via minMergeDistance
V4.24 13-03-2021
- Via SymbolOrigin de berekende (centroid) origin kunnen overrulen
@@ -5,8 +8,8 @@ V4.23 22-10-2020
(let op: vergeten versienummer in SLNKDWFVersion.h op te hogen)
- Win32 Exceptions bij omgeldig plaatje iets beter afvangen
- Betere co<63>rdinaten markers in fac_verify
- Font ook resetten voor allereerste symbool
- Symbolen commentaar iets duidelijker in ASCII dwf
- Font ook resetten voor allereerste symbool
- Symbolen commentaar iets duidelijker in ASCII dwf
V4.22 24-06-2020
- DWFExceptions iets beter afvangen