Ausgabe der Variable_Strings auf dem KV-diagramm
This commit is contained in:
		
							parent
							
								
									54df760230
								
							
						
					
					
						commit
						9cbd9608e7
					
				
					 5 changed files with 262 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -28,7 +28,7 @@
 | 
			
		|||
    <ConfigurationType>Application</ConfigurationType>
 | 
			
		||||
    <UseOfMfc>Static</UseOfMfc>
 | 
			
		||||
    <CharacterSet>MultiByte</CharacterSet>
 | 
			
		||||
    <PlatformToolset>v100</PlatformToolset>
 | 
			
		||||
    <PlatformToolset>v120</PlatformToolset>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
 | 
			
		||||
  <ImportGroup Label="ExtensionSettings">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,12 +13,12 @@
 | 
			
		|||
// Ändern Sie folgende Definitionen für Plattformen, die älter als die unten angegebenen sind.
 | 
			
		||||
// Unter MSDN finden Sie die neuesten Informationen über die entsprechenden Werte für die unterschiedlichen Plattformen.
 | 
			
		||||
#ifndef WINVER				// Lassen Sie die Verwendung von Features spezifisch für Windows 95 und Windows NT 4 oder später zu.
 | 
			
		||||
#define WINVER 0x0400		// Ändern Sie den entsprechenden Wert, um auf Windows 98 und mindestens Windows 2000 abzuzielen.
 | 
			
		||||
#define WINVER 0x0501		// Ändern Sie den entsprechenden Wert, um auf Windows 98 und mindestens Windows 2000 abzuzielen.
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef _WIN32_WINNT		// Lassen Sie die Verwendung von Features spezifisch für Windows NT 4 oder später zu.
 | 
			
		||||
//#define _WIN32_WINNT 0x0400		// Ändern Sie den entsprechenden Wert, um auf Windows 98 und mindestens Windows 2000 abzuzielen.
 | 
			
		||||
#define _WIN32_WINNT 0x0500		// Ändern Sie den entsprechenden Wert, um auf Windows 98 und mindestens Windows 2000 abzuzielen.
 | 
			
		||||
#define _WIN32_WINNT 0x0501		// Ändern Sie den entsprechenden Wert, um auf Windows 98 und mindestens Windows 2000 abzuzielen.
 | 
			
		||||
#endif						
 | 
			
		||||
 | 
			
		||||
#ifndef _WIN32_WINDOWS		// Lassen Sie die Verwendung von Features spezifisch für Windows 98 oder später zu.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,7 +83,7 @@ void user_main(void)
 | 
			
		|||
	Wertetabelle* wt = new Wertetabelle(allCells, variables);
 | 
			
		||||
	wt->Print();
 | 
			
		||||
 | 
			
		||||
	KV* kv = new KV(globalPIC, allCells, 30);
 | 
			
		||||
	KV* kv = new KV(globalPIC, allCells, 30,variables);
 | 
			
		||||
	kv->Print(30);
 | 
			
		||||
	//system("pause");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ void user_main(void)
 | 
			
		|||
	allCells->findHazards();
 | 
			
		||||
	//system("pause");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	// print Wertetabelle and KV of corrected data
 | 
			
		||||
	wt->Print();
 | 
			
		||||
	delete wt;
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +104,7 @@ void user_main(void)
 | 
			
		|||
	allCells->Dispose();
 | 
			
		||||
	delete globalPIC;
 | 
			
		||||
	delete allCells;
 | 
			
		||||
	//delete [] variables;   @ Johnny: Warum soll ich diese Auskommentierung nicht aktieren??
 | 
			
		||||
	
 | 
			
		||||
	pause();
 | 
			
		||||
	return;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,7 @@ void KV::Print(uint offsetX, uint offsetY)
 | 
			
		|||
	this->offsetY = offsetY;
 | 
			
		||||
 | 
			
		||||
	this->PrintRaster();
 | 
			
		||||
	this->PrintString_Var();
 | 
			
		||||
	this->PrintVariables();
 | 
			
		||||
	this->PrintCellValues();
 | 
			
		||||
	this->PrintPrimImplikanten();
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +46,7 @@ uint KV::height()
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
void KV::PrintRaster()	// Erstellt die Felder:	▯▯▯
 | 
			
		||||
{						//						▯▯▯
 | 
			
		||||
						//						▯▯▯
 | 
			
		||||
| 
						 | 
				
			
			@ -65,10 +66,87 @@ void KV::PrintRaster()	// Erstellt die Felder:	▯▯▯
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
//------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
void KV::Setstring_Var(){
 | 
			
		||||
 | 
			
		||||
	this->string_VarY = "";
 | 
			
		||||
	this->string_VarX = "";
 | 
			
		||||
 | 
			
		||||
	for (uint i = 0; i < this->variables->size(); i++) {
 | 
			
		||||
 | 
			
		||||
		if (i > this->numVarY-1) {
 | 
			
		||||
			this->string_VarX += this->variables->at(i) + " ";
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			this->string_VarY += this->variables->at(i) + " ";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Weitere Initialisierung der restlichen privaten Klassenelemente.
 | 
			
		||||
 | 
			
		||||
	this->VarY_Length = max(this->edgeLength+1, this->string_VarY.size() * 10);
 | 
			
		||||
	this->VarX_Length = max(this->edgeLength+1, this->string_VarX.size() * 10);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KV::PrintRaster()	// Erstellt die Felder:	▯▯▯
 | 
			
		||||
{						//						▯▯▯
 | 
			
		||||
	                    //						▯▯▯
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	this->Line(0, this->VarX_Length, 0, this->heightPx, BLACK);			// first vertical line, one edge shorter
 | 
			
		||||
	this->Line(this->VarY_Length, 0, this->VarY_Length, this->heightPx, BLACK); // second  vertical line
 | 
			
		||||
	for (uint w = 1; w <= this->numFieldX ; w++)					// vertical lines. Periodic with (edgeLength + 1)
 | 
			
		||||
	{
 | 
			
		||||
		uint X = w * (this->edgeLength + 1) + VarY_Length;						// X position of the line
 | 
			
		||||
		this->Line(X, 0, X, this->heightPx, BLACK);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	this->Line(this->VarY_Length, 0, this->widthPx, 0, BLACK);				// first horizontal line, one edge shorter
 | 
			
		||||
	this->Line(0, this->VarX_Length, this->widthPx, this->VarX_Length, BLACK); // +10 to avoid the strings coliision
 | 
			
		||||
		                                                                                                     // second horizontal line
 | 
			
		||||
	for (uint h = 1; h <= this->numFieldY ; h++)					// horizontal lines. Periodic with (edgeLength + 1)
 | 
			
		||||
	{
 | 
			
		||||
		uint Y = h * (this->edgeLength + 1) + this->VarX_Length; // Y position of the line
 | 
			
		||||
		this->Line(0, Y, this->widthPx, Y, BLACK);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KV::PrintString_Var(){
 | 
			
		||||
 | 
			
		||||
	char* valueY = (char*)this->string_VarY.c_str();
 | 
			
		||||
	char* valueX= (char*)this->string_VarX.c_str();
 | 
			
		||||
	uint  x1_valueY = 0;                                      // coordinante of ValueY
 | 
			
		||||
	uint  y1_valueY = this->VarX_Length-12;
 | 
			
		||||
	uint  x2_valueY = this->VarY_Length;
 | 
			
		||||
	uint y2_valueY = VarX_Length;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	uint  x1_valueX = 0;            // coordinante of ValueX
 | 
			
		||||
	uint  y1_valueX = 0;
 | 
			
		||||
	uint  x2_valueX = VarY_Length;
 | 
			
		||||
	uint y2_valueX = VarX_Length/3;
 | 
			
		||||
 | 
			
		||||
	this->TextBoxBold(x1_valueY, y1_valueY, x2_valueY, y2_valueY, 10, BLACK, TRANS, TRANS, CENTER, valueY);
 | 
			
		||||
	this->TextBoxBold(x1_valueX, y1_valueX, x2_valueX, y2_valueX, 10, BLACK, BLACK, TRANS,CENTER, valueX);
 | 
			
		||||
 | 
			
		||||
	//this->Text(x1_valueX, y1_valueX, 10, BLACK,TRANS, 90, CENTER, valueX);
 | 
			
		||||
 | 
			
		||||
	// this->Text(x1_valueY, y1_valueY, 10, BLACK, TRANS, 0, int align, char* theText)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
/*
 | 
			
		||||
void KV::PrintVariables()	// Erstellt die Werte der Variablen in der ersten X- und Y-Spalte:	 ▯ 0 1
 | 
			
		||||
{							//																	 0 ▯▯
 | 
			
		||||
							//																	 1 ▯▯
 | 
			
		||||
	for (uint w = 0; w < this->numFieldX; w++)					// vertical variable text
 | 
			
		||||
	for (uint w = 0; w < this->numFieldX; w++)					// horizontal variable text
 | 
			
		||||
	{
 | 
			
		||||
		uint XL = (w + 1) * (this->edgeLength + 1);
 | 
			
		||||
		uint XR = XL + this->edgeLength;
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +156,7 @@ void KV::PrintVariables()	// Erstellt die Werte der Variablen in der ersten X- u
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	for (uint h = 0; h < this->numFieldY; h++)					// horizontal variable text
 | 
			
		||||
	for (uint h = 0; h < this->numFieldY; h++)					// vertical variable text
 | 
			
		||||
	{
 | 
			
		||||
		uint YT = (h + 1) * (this->edgeLength + 1);
 | 
			
		||||
		uint YB = YT + this->edgeLength;
 | 
			
		||||
| 
						 | 
				
			
			@ -87,7 +165,35 @@ void KV::PrintVariables()	// Erstellt die Werte der Variablen in der ersten X- u
 | 
			
		|||
		delete value;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
//----------------------------------------------
 | 
			
		||||
 | 
			
		||||
void KV::PrintVariables()	// Erstellt die Werte der Variablen in der ersten X- und Y-Spalte:	 ▯ 0 1
 | 
			
		||||
{							//																	 0 ▯▯
 | 
			
		||||
	//																	 1 ▯▯
 | 
			
		||||
	for (uint w = 0; w < this->numFieldX; w++)					// horizontal variable text
 | 
			
		||||
	{
 | 
			
		||||
		uint XL = w * (this->edgeLength + 1) + this->VarY_Length;
 | 
			
		||||
		uint XR = XL + this->edgeLength;
 | 
			
		||||
		char* value = this->Binary(w ^ (w / 2), this->numVarX);		// in Gray und String umwandeln
 | 
			
		||||
		this->TextBoxBold(XL, 0, XR, this->edgeLength, 10, BLACK, TRANS, TRANS, CENTER, value);
 | 
			
		||||
		delete value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	for (uint h = 0; h < this->numFieldY; h++)					// vertical variable text
 | 
			
		||||
	{
 | 
			
		||||
		uint YT = h * (this->edgeLength + 1) + this->VarX_Length;
 | 
			
		||||
		uint YB = YT + this->edgeLength;
 | 
			
		||||
		char* value = this->Binary(h ^ (h / 2), this->numVarY);		// in Gray und String umwandeln
 | 
			
		||||
		this->TextBoxBold(0, YT, this->edgeLength, YB, 10, BLACK, TRANS, TRANS, CENTER, value);
 | 
			
		||||
		delete value;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
void KV::PrintCellValues()	// Erstellt die Werte der jeweiligen Zellen: ▯▯▯
 | 
			
		||||
{							//											 ▯ x x
 | 
			
		||||
							//											 ▯ x x
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +210,40 @@ void KV::PrintCellValues()	// Erstellt die Werte der jeweiligen Zellen: ▯▯
 | 
			
		|||
			uint i = ((h^h/2) * this->numFieldX) | (w^w/2);		// w und h müssen getrennt in Gray umgewandelt werden (weil sie so aufgetragen wurden, siehe )
 | 
			
		||||
																// zusammengesetzt ergeben sie dann unsere aktuelle Position
 | 
			
		||||
 | 
			
		||||
			// Dies sind die Zellnummern:
 | 
			
		||||
			/*
 | 
			
		||||
			char* I = new char[(int)(ceil(log10((float)numElements)))+1];
 | 
			
		||||
			itoa(i, I, 10);
 | 
			
		||||
			this->TextBox(XL, YT, XR, YB, 10, BLACK, TRANSPARENT, TRANSPARENT, CENTER, I);
 | 
			
		||||
			// später muss ich die Auskommentierung schließen.
 | 
			
		||||
 | 
			
		||||
			// Dies sind die Zellwerte:
 | 
			
		||||
			char* I = new char[2];
 | 
			
		||||
			_itoa_s(this->allCells->at(i)->value, I, 2, 10);
 | 
			
		||||
			this->TextBox(XL, YT, XR, YB, 10, BLACK, TRANS, TRANS, CENTER, I);
 | 
			
		||||
			delete I;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
//---------------------------------------------------------------
 | 
			
		||||
void KV::PrintCellValues()	// Erstellt die Werte der jeweiligen Zellen: ▯▯▯
 | 
			
		||||
{							//											 ▯ x x
 | 
			
		||||
	                       //											 ▯ x x
 | 
			
		||||
	for (uint h = 0; h < this->numFieldY; h++)					// jede Spalte durchgehen
 | 
			
		||||
	{
 | 
			
		||||
		uint YT = h * (this->edgeLength + 1)+ this->VarX_Length;				// Y Positionen berechnen
 | 
			
		||||
		uint YB = YT + this->edgeLength;
 | 
			
		||||
 | 
			
		||||
		for (uint w = 0; w < this->numFieldX; w++)				// jede Zeile durchgehen
 | 
			
		||||
		{
 | 
			
		||||
			uint XL = w * (this->edgeLength + 1) + this->VarY_Length;			// X Positionen berechnen
 | 
			
		||||
			uint XR = XL + this->edgeLength;
 | 
			
		||||
 | 
			
		||||
			uint i = ((h^h / 2) * this->numFieldX) | (w^w / 2);		// w und h müssen getrennt in Gray umgewandelt werden (weil sie so aufgetragen wurden, siehe )
 | 
			
		||||
			// zusammengesetzt ergeben sie dann unsere aktuelle Position
 | 
			
		||||
 | 
			
		||||
			// Dies sind die Zellnummern:
 | 
			
		||||
			/*
 | 
			
		||||
			char* I = new char[(int)(ceil(log10((float)numElements)))+1];
 | 
			
		||||
| 
						 | 
				
			
			@ -120,6 +260,7 @@ void KV::PrintCellValues()	// Erstellt die Werte der jeweiligen Zellen: ▯▯
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
void KV::PrintPrimImplikanten()
 | 
			
		||||
{
 | 
			
		||||
	srand(time(NULL));
 | 
			
		||||
| 
						 | 
				
			
			@ -138,12 +279,17 @@ void KV::PrintPrimImplikanten()
 | 
			
		|||
 | 
			
		||||
			if (w == 0)
 | 
			
		||||
				overflow |= 0x1;											// left side
 | 
			
		||||
			else if (w == this->numVarX)
 | 
			
		||||
			else if (w == this->numFieldX-1)
 | 
			
		||||
				overflow |= 0x2;											// right side
 | 
			
		||||
			else
 | 
			
		||||
				overflow |= 0x4;
 | 
			
		||||
			
 | 
			
		||||
			if (h == 0)
 | 
			
		||||
				overflow |= 0x10;											// upper side
 | 
			
		||||
			else if (h == this->numVarY)
 | 
			
		||||
			else if (h == this->numFieldY-1)
 | 
			
		||||
				overflow |= 0x20;											// lower side
 | 
			
		||||
			else
 | 
			
		||||
				overflow |= 0x40;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch (overflow)
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +342,88 @@ void KV::PrintPrimImplikanten()
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
//--------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
void KV::PrintPrimImplikanten()
 | 
			
		||||
{
 | 
			
		||||
	srand(time(NULL));
 | 
			
		||||
	for (uint i = 0; i < this->globalPic->size(); i++)
 | 
			
		||||
	{
 | 
			
		||||
		PrimImplikant* currentPI = this->globalPic->at(i);
 | 
			
		||||
 | 
			
		||||
		uint overflow = 0;													// at which sides the PrimImplikant overlaps
 | 
			
		||||
		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;
 | 
			
		||||
 | 
			
		||||
			if (w == 0)
 | 
			
		||||
				overflow |= 0x1;											// left side
 | 
			
		||||
			else if (w == this->numFieldX - 1)
 | 
			
		||||
				overflow |= 0x2;											// right side
 | 
			
		||||
			else
 | 
			
		||||
				overflow |= 0x4;
 | 
			
		||||
 | 
			
		||||
			if (h == 0)
 | 
			
		||||
				overflow |= 0x10;											// upper side
 | 
			
		||||
			else if (h == this->numFieldY - 1)
 | 
			
		||||
				overflow |= 0x20;											// lower side
 | 
			
		||||
			else
 | 
			
		||||
				overflow |= 0x40;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch (overflow)
 | 
			
		||||
		{
 | 
			
		||||
		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  * (this->edgeLength + 1) + this->VarY_Length;					// Upper coord
 | 
			
		||||
				uint x2 = x1 + this->edgeLength;							// Lower coord
 | 
			
		||||
				uint y1 = h * (this->edgeLength + 1) + this->VarX_Length;					// 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
 | 
			
		||||
			{
 | 
			
		||||
				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);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void KV::Line(uint x1, uint y1, uint x2, uint y2, int color)
 | 
			
		||||
| 
						 | 
				
			
			@ -233,10 +460,10 @@ char* KV::Binary(uint x, char length)
 | 
			
		|||
    char* buffer = new char[length+1];
 | 
			
		||||
    char* p = buffer + length;
 | 
			
		||||
 | 
			
		||||
	*p-- = 0;
 | 
			
		||||
	*p = 0;
 | 
			
		||||
    do
 | 
			
		||||
    {
 | 
			
		||||
        *p-- = '0' + (x & 1);
 | 
			
		||||
        *--p = '0' + (x & 1);
 | 
			
		||||
		x >>= 1;
 | 
			
		||||
    } while (--length);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,36 +22,50 @@ public:
 | 
			
		|||
	uint height();										// Gibt die Höhe   eines KV-Diagramms zurück (heightPx)
 | 
			
		||||
 | 
			
		||||
	// Konstruktor
 | 
			
		||||
	KV(PrimImplikantCollection* globalPic, CellCollection* allCells, uint size) 
 | 
			
		||||
	  :	edgeLength(size),
 | 
			
		||||
		numVarX(((uint)floor(dimension/2.0f))), numVarY(((uint)ceil(dimension/2.0f))),
 | 
			
		||||
		numFieldX((uint)pow(2,(float)numVarX)), numFieldY((uint)pow(2,(float)numVarY)),
 | 
			
		||||
		widthPx((numFieldX + 1) * (this->edgeLength + 1)), heightPx((numFieldY + 1) * (this->edgeLength + 1))
 | 
			
		||||
	KV(PrimImplikantCollection* globalPic, CellCollection* allCells, uint size, vector<string>* &variables)
 | 
			
		||||
		: edgeLength(size), numVarX(((uint)floor(dimension / 2.0f))), numVarY(((uint)ceil(dimension / 2.0f))),
 | 
			
		||||
		numFieldX((uint)pow(2, (float)numVarX)), numFieldY((uint)pow(2, (float)numVarY))
 | 
			
		||||
	{
 | 
			
		||||
	  
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		this->globalPic = globalPic;
 | 
			
		||||
		this->allCells = allCells;
 | 
			
		||||
		this->variables = variables;
 | 
			
		||||
		Setstring_Var();
 | 
			
		||||
		this->widthPx = numFieldX * (this->edgeLength + 1) + this->VarY_Length;
 | 
			
		||||
		this->heightPx = numFieldY * (this->edgeLength + 1) + this->VarX_Length;
 | 
			
		||||
 | 
			
		||||
		this->Clear();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	PrimImplikantCollection* globalPic;
 | 
			
		||||
	CellCollection* allCells;
 | 
			
		||||
	vector<string>* variables;
 | 
			
		||||
 | 
			
		||||
	uint offsetX;						// Der freie Platz nach links in Pixeln
 | 
			
		||||
	uint offsetY;						// Der freie Platz nach rechts in Pixeln
 | 
			
		||||
 | 
			
		||||
	const uint edgeLength;				// Die Kantenlänge der einzelnen Felder
 | 
			
		||||
 | 
			
		||||
	const uint numVarX;					// Wieviele Variablen in X-Richtung gezeichnet werden
 | 
			
		||||
	const uint numVarY;					// Wieviele Variablen in Y-Richtung gezeichnet werden
 | 
			
		||||
	const uint numFieldX;				// Wieviele Felder in X-Richtung gezeichnet werden = pow(2, numVarX)
 | 
			
		||||
    const uint numFieldX;				// Wieviele Felder in X-Richtung gezeichnet werden = pow(2, numVarX)
 | 
			
		||||
	const uint numFieldY;				// Wieviele Felder in Y-Richtung gezeichnet werden = pow(2, numVarY)
 | 
			
		||||
	const uint widthPx;					// Breite des KV-Diagramms in Pixeln
 | 
			
		||||
	const uint heightPx;				// Höhe   des KV-Diagramms in Pixeln
 | 
			
		||||
    uint widthPx;					    // Breite des KV-Diagramms in Pixeln
 | 
			
		||||
	uint heightPx;				        // Höhe   des KV-Diagramms in Pixeln
 | 
			
		||||
	uint VarX_Length;                   // Höhe der Variablen in X-Richtung in Pixeln
 | 
			
		||||
	uint VarY_Length;                   // Breite der Variablen in Y-Richtung in Pixeln
 | 
			
		||||
	string string_VarX;                 // Variables_String in X-Richtung
 | 
			
		||||
	string string_VarY;                 // Variables_String  in Y_Richtung     
 | 
			
		||||
 | 
			
		||||
	void Setstring_Var();                // Einfuegen von String_Varx & String_VarY mit Variables.
 | 
			
		||||
	void PrintRaster();					// Erstellt die Felder
 | 
			
		||||
	void PrintVariables();				// Erstellt die Werte der Variablen in der ersten X- und Y-Spalte
 | 
			
		||||
	void PrintCellValues();				// Erstellt die Werte der jeweiligen Zellen
 | 
			
		||||
	void PrintPrimImplikanten();		// Erstellt die einzelnen Primimplikanten
 | 
			
		||||
	void PrintString_Var();                // Erstellt den horizontalen TextVariable & vertikalen Textvariable
 | 
			
		||||
	
 | 
			
		||||
	void Clear();
 | 
			
		||||
	void Line(uint x1, uint y1, uint x2, uint y2, int color);																			// Zeichnet eine Linie mit Offset
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue