#include "stdafx.h"
#include "matrix.h"
#include "pixel.h"
#include "datenbank.h"
using namespace std;

matrix::matrix( void)
{
}

matrix::~matrix( void)
{
}

bool** matrix::create_vorkommen_matrix(
        int zeilen,
        int spalten,
        int artID,
        double reichweite,
        int bundeslandID)
{
    datenbank daten;

    bool** matrix;
    /*
     int i,j;

     matrix = new bool*[zeilen];
     for(i= 0; i<zeilen; i++)
     matrix[i] = new bool[spalten];
     
     for(i= 0; i<zeilen; i++)
     {
     
     for(j= 0; j<spalten; j++)
     {
     matrix[i][j] = false;
     
     }
     }
     */
    matrix = daten.get_vorkommen( artID, reichweite, zeilen, spalten,
            bundeslandID);
    return matrix;
}

pixel*** matrix::create_pixel_matrix( int zeilen, int spalten, int bundeslandID)
{
    datenbank daten;

    pixel*** matrix;

    //matrix = new pixel*[673][884];

    int i, j;

    matrix = new pixel**[ zeilen];
    for( i = 0; i < zeilen; i++)
        matrix[ i] = new pixel*[ spalten];

    for( i = 0; i < zeilen; i++)
    {

        for( j = 0; j < spalten; j++)
        {
            matrix[ i][ j] = new pixel;
            matrix[ i][ j]->set_bundesland( " ");
            matrix[ i][ j]->set_feuchte_entwaessert( 0);
            matrix[ i][ j]->set_feuchte_feucht( 0);
            matrix[ i][ j]->set_feuchte_mittel( 0);
            matrix[ i][ j]->set_feuchte_trocken( 0);
            matrix[ i][ j]->set_gruenlandzahl( 0);
            matrix[ i][ j]->set_hoehenlage( 0);
            matrix[ i][ j]->set_matrix_i( i);
            matrix[ i][ j]->set_matrix_j( j);
            matrix[ i][ j]->set_praedatorendruck( 0);
            matrix[ i][ j]->set_raumgliederung( " ");
            matrix[ i][ j]->set_siedlung( 0);
            matrix[ i][ j]->set_wald( 0);
            matrix[ i][ j]->set_wasser( 0);
            matrix[ i][ j]->set_wuchsklasse( 0);
            matrix[ i][ j]->set_x_koordinate( 0);
            matrix[ i][ j]->set_y_koordinate( 0);
        }
    }

    bool b = daten.get_pixel( matrix, bundeslandID);
    return matrix;
}
void matrix::delete_pixel_matrix( pixel*** matrix, int zeilen, int spalten)
{

    int i, j;
    for( i = 0; i < zeilen; i++)
    {

        for( j = 0; j < spalten; j++)
        {
            delete matrix[ i][ j];
        }
        delete[] matrix[ i];
    }

    delete[] matrix;
}
pixel*** matrix::create_pixel_matrix(
        int zeilen,
        int spalten,
        int bundeslandID,
        bool hoch)
{
    datenbank daten;

    pixel*** matrix;

    //matrix = new pixel*[673][884];

    int i, j;

    matrix = new pixel**[ zeilen];
    for( i = 0; i < zeilen; i++)
        matrix[ i] = new pixel*[ spalten];

    for( i = 0; i < zeilen; i++)
    {

        for( j = 0; j < spalten; j++)
        {
            matrix[ i][ j] = new pixel;
            matrix[ i][ j]->set_bundesland( " ");
            matrix[ i][ j]->set_feuchte_entwaessert( 0);
            matrix[ i][ j]->set_feuchte_feucht( 0);
            matrix[ i][ j]->set_feuchte_mittel( 0);
            matrix[ i][ j]->set_feuchte_trocken( 0);
            matrix[ i][ j]->set_gruenlandzahl( 0);
            matrix[ i][ j]->set_hoehenlage( 0);
            matrix[ i][ j]->set_matrix_i( i);
            matrix[ i][ j]->set_matrix_j( j);
            matrix[ i][ j]->set_praedatorendruck( 0);
            matrix[ i][ j]->set_raumgliederung( " ");
            matrix[ i][ j]->set_siedlung( 0);
            matrix[ i][ j]->set_wald( 0);
            matrix[ i][ j]->set_wasser( 0);
            matrix[ i][ j]->set_wuchsklasse( 0);
            matrix[ i][ j]->set_x_koordinate( 0);
            matrix[ i][ j]->set_y_koordinate( 0);
        }
    }

    bool b = daten.get_pixel( matrix, bundeslandID, hoch);
    return matrix;
}

void matrix::delete_vorkommen_matrix( bool** matrix, int zeilen, int spalten)
{

    int i;
    for( i = 0; i < zeilen; i++)
    {

        delete[] matrix[ i];
    }

    delete[] matrix;
}
ergebnis*** matrix::create_ergebnis_matrix( int zeilen, int spalten)
{

    ergebnis*** matrix;

    //matrix = new pixel*[673][884];

    int i, j;

    matrix = new ergebnis**[ zeilen];
    for( i = 0; i < zeilen; i++)
        matrix[ i] = new ergebnis*[ spalten];

    for( i = 0; i < zeilen; i++)
    {

        for( j = 0; j < spalten; j++)
        {
            matrix[ i][ j] = new ergebnis;

        }
    }

    return matrix;
}
void matrix::delete_ergebnis_matrix(
        ergebnis*** matrix,
        int zeilen,
        int spalten)
{

    int i, j;
    for( i = 0; i < zeilen; i++)
    {

        for( j = 0; j < spalten; j++)
        {
            delete matrix[ i][ j];
        }
        delete[] matrix[ i];
    }

    delete[] matrix;
}
