This commit is contained in:
Jonny007-MKD 2013-12-09 17:19:20 +01:00
parent 0b2912bb17
commit 54df760230
5 changed files with 67 additions and 34 deletions

Binary file not shown.

View file

@ -28,6 +28,7 @@
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>Static</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@ -58,13 +59,14 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<MultiProcessorCompilation>false</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -74,7 +76,8 @@
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<RandomizedBaseAddress>
</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>

View file

@ -63,9 +63,6 @@
<ClCompile Include="..\Hazard\Hazard\Hazard.cpp">
<Filter>Quelldateien</Filter>
</ClCompile>
<ClCompile Include="..\Hazard\Hazard\KV.cpp">
<Filter>Quelldateien</Filter>
</ClCompile>
<ClCompile Include="..\Hazard\Hazard\PrimImplikant.cpp">
<Filter>Quelldateien</Filter>
</ClCompile>
@ -75,6 +72,9 @@
<ClCompile Include="..\Hazard\Hazard\Wertetabelle.cpp">
<Filter>Quelldateien</Filter>
</ClCompile>
<ClCompile Include="..\Hazard\Hazard\KV.cpp">
<Filter>Quelldateien</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="GDE_3.h">
@ -128,9 +128,6 @@
<ClInclude Include="..\Hazard\Hazard\Cparser.h">
<Filter>Headerdateien</Filter>
</ClInclude>
<ClInclude Include="..\Hazard\Hazard\KV.h">
<Filter>Headerdateien</Filter>
</ClInclude>
<ClInclude Include="..\Hazard\Hazard\PrimImplikant.h">
<Filter>Headerdateien</Filter>
</ClInclude>
@ -140,6 +137,9 @@
<ClInclude Include="..\Hazard\Hazard\Wertetabelle.h">
<Filter>Headerdateien</Filter>
</ClInclude>
<ClInclude Include="..\Hazard\Hazard\KV.h">
<Filter>Headerdateien</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="res\GDE_3.ico">

View file

@ -127,7 +127,7 @@ void KV::PrintPrimImplikanten()
{
PrimImplikant* currentPI = this->globalPic->at(i);
uint X1 = -1, X2 = 0, Y1 = -1, Y2 = 0; // find coordinates for Rechteck
uint overflow = 0; // at which sides the PrimImplikant overlaps
for (uint j = 0; j < currentPI->implikanten.size(); j++)
{
uint currentI = currentPI->implikanten[j];
@ -136,32 +136,61 @@ void KV::PrintPrimImplikanten()
uint h = (currentI >> this->numVarX); // get all bits that make Y (=h)
h ^= h/2;
uint x1 = (w + 1) * (this->edgeLength + 1); // Upper coord
uint x2 = x1 + this->edgeLength; // Lower coord
uint y1 = (h + 1) * (this->edgeLength + 1); // Left coord
uint y2 = y1 + this->edgeLength; // Right coord
X1 = min(X1, x1);
X2 = max(X2, x2);
Y1 = min(Y1, y1);
Y2 = max(Y2, y2);
if (w == 0)
overflow |= 0x1; // left side
else if (w == this->numVarX)
overflow |= 0x2; // right side
if (h == 0)
overflow |= 0x10; // upper side
else if (h == this->numVarY)
overflow |= 0x20; // lower side
}
if (currentPI->name.find("|") != string::npos)
switch (overflow)
{
this->Rechteck(X1+12, Y1+9, X2-12, Y2-9, RED, TRANS);
}
else
{
uint random = rand() % 10;
X1 += random;
X2 -= random;
Y1 += random;
Y2 -= random;
if (currentPI->implikanten.size() == 1)
this->Rechteck(X1, Y1, X2, Y2, GREEN, TRANS);
case 0x33: // all 4 edges
break;
case 0x30: // overflows from top to bottom
break;
case 0x03: // overflows from left to right
break;
default:
uint X1 = -1, X2 = 0, Y1 = -1, Y2 = 0; // find coordinates for Rechteck
for (uint j = 0; j < currentPI->implikanten.size(); j++)
{
uint currentI = currentPI->implikanten[j];
uint w = (currentI & ((0x1 << (this->numVarX)) - 1)); // get all bits that make X (=w)
w ^= w/2;
uint h = (currentI >> this->numVarX); // get all bits that make Y (=h)
h ^= h/2;
uint x1 = (w + 1) * (this->edgeLength + 1); // Upper coord
uint x2 = x1 + this->edgeLength; // Lower coord
uint y1 = (h + 1) * (this->edgeLength + 1); // Left coord
uint y2 = y1 + this->edgeLength; // Right coord
X1 = min(X1, x1);
X2 = max(X2, x2);
Y1 = min(Y1, y1);
Y2 = max(Y2, y2);
}
if (currentPI->name.find("|") != string::npos)
{
this->Rechteck(X1+12, Y1+9, X2-12, Y2-9, RED, TRANS);
}
else
this->Rechteck(X1, Y1, X2, Y2, BLUE, TRANS);
{
uint random = rand() % 10;
X1 += random;
X2 -= random;
Y1 += random;
Y2 -= random;
if (currentPI->implikanten.size() == 1)
this->Rechteck(X1, Y1, X2, Y2, GREEN, TRANS);
else
this->Rechteck(X1, Y1, X2, Y2, BLUE, TRANS);
}
}
}
}

View file

@ -1,7 +1,6 @@
#include "stdafx.h"
#include <vector>
#include <string>
#include <WinGDI.h>
#include "Cell.h"
#include "CellCollection.h"
#include "PrimImplikantCollection.h"
@ -10,6 +9,10 @@ extern uint dimension;
extern uint numElements;
extern bool KNF;
#ifndef _KV_H
#define _KV_H
class KV
{
public:
@ -61,7 +64,5 @@ private:
};
#ifndef _KV_H
#define _KV_H
#define CENTER SINGLE_LINE|CENTER_ALIGN|VCENTER_ALIGN
#endif