Лабораторная работа 2 - Применение модели грид-потоков для внедрения в грид существующего приложения

 

Заготовка кода для класса грид-потока RenderThread

 


 

using System;

using System.IO;

using System.Drawing;

using System.Diagnostics;

using Alchemi.Core.Owner;

 

/// <summary>

/// Класс грид-потока. Отвечает за обработку части изображения.

/// </summary>

 [Serializable]

public class RenderThread : GThread

{

    /// <summary>Строка с текстовым представлением сцены для рендеринга.</summary>

    private string inputScene;

 

    /// <summary>Каталог для хранения временных результатов.</summary>

    private string tempDirectory;

 

    /// <summary>Рабочий каталог приложения MegaPOV.</summary>

    private string workDirectory;

 

    /// <summary>Дополнительные аргументы приложения MegaPOV.</summary>

    private string additionalArguments;

 

    /// <summary>Ширина изображения в пикселях.</summary>

    private int width;

 

    /// <summary>Высота изображения в пикселях.</summary>

    private int height;

 

    /// <summary>Начальный ряд пикселей для рендеринга.</summary>

    private int startRow;

 

    /// <summary>Начальный столбец пикселей для рендеринга.</summary>

    private int startCol;

 

    /// <summary>Конечный ряд пикселей для рендеринга.</summary>

    private int endRow;

 

    /// <summary>Конечный столбец пикселей для рендеринга.</summary>

    private int endCol;

 

    /// <summary>Качесво сглаживания изображения.</summary>

    private AntialisingLevel antialiasLevel;

 

    /// <summary>Точечный рисунок для хранения части изображения.</summary>

    private Bitmap image;

 

    /// <summary>

    /// Создает новый экземпляр грид-потока для рендеринга части изображения.

    /// </summary>

    /// <param name="inputScene">строка с текстовым представлением сцены</param>

    /// <param name="tempDirectory">временный каталог</param>

    /// <param name="workDirectory">рабочий каталог</param>

    /// <param name="width">ширина изображения</param>

    /// <param name="height">высота изображения</param>

    /// <param name="startRow">начальный ряд</param>

    /// <param name="startCol">начальный столбец</param>

    /// <param name="endRow">конечный ряд</param>

    /// <param name="endCol">конечный столбец</param>

    /// <param name="antialiasLevel">настройки сглаживания изображения</param>

    public RenderThread(string inputScene, string tempDirectory, string workDirectory,

                         int width, int height,

                         int startRow, int startCol, int endRow, int endCol,

                         AntialisingLevel antialiasLevel, string additionalArguments)

    {

        ...

    }

 

    /// <summary>

    /// Основной метод грид-потока. Обрабатывает часть изображения.

    /// </summary>

    public override void Start()

    {

        ...   

    }

 

    /// <summary>Сгенерированная часть общего изображения.</summary>

    public Bitmap Image

    {

        get

        {

            return image;

        }

    }

 

    /// <summary>Координата левого столбца пикселей.</summary>

    public int StartCol

    {

        get

        {

            return startCol;

        }

    }

 

    /// <summary>Координата верхнего столбца пикселей.</summary>

    public int StartRow

    {

        get

        {

            return startRow;

        }

    }

 

    /// <summary>Ширина сгенерированной части изображения.</summary>

    public int Width

    {

        get

        {

            return endCol - startCol;

        }

    }

 

    /// <summary>Высота сгенерированной части изображения.</summary>

    public int Height

    {

        get

        {

            return endRow - startRow;

        }

    }

}