Статьи:

Профиль:

Внешний вид ВСТ плагина VST GUI 2.2 – часть 2


Давайте продолжим знакомство с визуальным интерфейсом ВСТ плагинов - VST GUI. В первой части были даны справочные данные о таких классах как AEffGUIEditor, CView, CViewContainer, CFrame. Во второй части мы продолжим наше знакомство с классами и методами.Не беспокойтесь, позже данные публикации будут использоваться — на них буду ссылаться при рассмотрении практических примеров ВСТ плагинов, это необходимый фундамент строящегося дома :) . Итак продолжим, стандартно зелёным выделены функции, оранжевым — их методы, фиолетовым — упоминания о них в тексте.

CBitmap

#include <vstgui.h>

class CBitmap;

Данный класс используется для импорта и работы с различными типами изображений, которые наиболее часто используются для оформления контроллеров (регуляторов, кнопок и т.д.)

CBitmap

CBitmap (int resourceID);

Создаёт растровое изображение исходя из его идентификатора.

Оглавление
Часть 1
Часть 2
Часть 3 — Контроллеры
Часть 4 — Контроллеры

Пример:

long MyEditor::open (void *ptr)
{

myPixmap = new CBitmap (kMyPixmapID);

}

CBitmap

CBitmap (CFrame &frame, int width, int height);

Создаёт изображение заданного размера, где width и height — это ширина и высота изобажения соответственно (в пикселях).

~CBitmap

~CBitmap ();

Удаление изображения.

draw

void draw (CDrawContext *drawContext, CRect &rect, const CPoint & offset = CPoint (0, 0));

Создаёт изобажения, используя данный прямоугольник (rect) в качестве координаты положения будущего изображения, и оффсет (offset) для отделения части изображения.

drawTransparent

void drawTransparent (CDrawContext *context, CRect &rect, const CPoint & offset = CPoint (0, 0));

Выполняет то же что и предыдущая функция, только белый цвет используется в качестве прозрачного.

drawAlphaBlend

void drawAlphaBlend (CDrawContext *pContext, CRect &rect,
const CPoint &offset = CPoint (0, 0), unsigned char alpha = 128);

Используется для смешивания/адаптации изображения под фон, альфа значение задаёт степень прозрачности ихображения.

getWidth

int getWidth ();

Возвращает ширину изображения в пикселях.

getHeight

int getHeight ();

Возвращает высоту изображения в пикселях.

forget

void forget ();

Самоуничтожение в случае если больше не используется (нет ссылающихся объектов).

remember

void remember ();

Добавить ссылку / упоминание изображения.

getNbReference

long getNbReference ();

Возвращает колличество упоминаний данного изображения.

getHandle

void *getHandle ();

Возвращает ручку (???) изображения.

isLoaded

bool isLoaded ();

Возвращает ПРАВДУ если изображение полностью загружено.

setTransparentColor

void setTransparentColor (const CColor color);

Задаёт цвет в изображении, который будет прозрачным.

getTransparentColor

CColor getTransparentColor ();

Запрашивает цвет изображения, который установлен как прозрачный.

setTransparencyMask

void setTransparencyMask (CDrawContext* pContext, const CPoint& offset);

Создаёт маску прозрачности изображения.

CDrawContext

#include <vstgui.h>

class CDrawContext;

Данный класс содержит различные функции прорисовки объектов визуального интерфейса.

CDrawContext

CDrawContext (CFrame *frame, void *systemContext, void *window = 0);

Прорисовка объектов, где frame — текущий слой, window — текущее окно.

Пример:

void MyPlug::idle ()		{
    static CDrawContext drawContext
        (frame, NULL, systemWindow);

    AEffGUIEditor::idle ();

    myControl->update (drawContext);
}

~CDrawContext

virtual ~CDrawContext ();

Удаление объекта прорисовки.

moveTo

void moveTo (CPoint& point);

Перемещение инструмента прорисовки «карандаш» к заданной точке (point).

lineTo

void lineTo (CPoint& point);

Рисует линию от текущей позиции к заданной в пикселях точке изображения (point) .

polyLine

void polyLine (CPoint& *pPoint, long numberOfPoints);

Соединяет линией сразу несколько точек. p — это список точек, numberOfPoints — их колличество.

fillPolygon

void fillPolygon (CPoint& *pPoint, long numberOfPoints);

Создаёт полигон, не включая его границы. Если координаты первой и последней точек отличаются — он всёравно будет закрыт. Цвет полигона задаётся с помощью setFillColor.

drawRect

void drawRect (CRect& rect);

Рисуется прямоугольник с использованием текущего цвета слоя/области.

fillRect

void fillRect (CRect& rect);

Заданный прямоугольник заполняется заданным цветом.

drawArc

void drawArc (CRect& rect, CPoint&point1, CPoint& point2);

Рисует дугу, первая точка которой задаётся с помощью point1, вторая - point2, высота дуги задаётся прямоугольником.

fillArc

void fillArc (CRect& rect, CPoint&point1, CPoint& point2);

Тоже что и в предыдущем методе,  но в данном случае дуга зарисовывается без границ.

drawEllipse

void drawEllipse (CRect& rect);

Заданный прямоугольник используется для построения эллипса.

fillEllipse

void fillEllipse (CRect& rect);

Рисуется элипс без границ, координаты заданы прямоугольником.

drawPoint

void drawPoint (CPoint& point, CColor &color);

Рисуется точка с заданной позицией и цветом.

getPoint

CColor getPoint (CPoint& point);

Определение цвета заданной точки.

floodFill

void floodFill (CPoint& start);

От стартовой позиции заполняет текущую область определённым цветом в тех местах, где прорисовка ранее не была занята.

setLineStyle

void setLineStyle (CLineStyle style);

Задаёт стиль прорисовывания линии. Данный метод влияет на следующие методы: lineTo, drawArc, polyLine. Стандартное значение: kLineSolid.

CLineStyle

CLineStyle getLineStyle ();

Определяет текущий стиль рисования линий.

setLineWidth

void setLineWidth (int width);

Задаёт ширину рисуемых линий. Влияет на следующие методы: lineTo, drawArc, polyLine и др. Стандартное значение: 1.

getLineWidth

int getLineWidth ();

Определяет текущую ширину рисуемых линий.

setDrawMode

void setDrawMode (CDrawModemode);

Задаёт текущий режим рисования.

getDrawMode

CDrawModegetDrawMode ();

Определяет текущий режим рисования.

setClipRect

void setClipRect (const CRect &clip);

Задаёт область отсечения прямоугольником.

getClipRect

CRect&getClipRect (CRect&clip);

Определяет область отсечения прямоугольником.

resetClipRect

void resetClipRect ();

Сбрасывает текущую область отсечения прямоугольником.

setFillColor

void setFillColor (CColor color);

Задаёт цвет заполнения определённой области.

getFillColor

CColor getFillColor ();

Определяет текущий цвет заполнения определённой области.

setFrameColor

void setFrameColor (CColor color);

Задаёт цвет слоя/области.

getFrameColor

CColor getFrameColor ();

Запрашивает цвет слоя/области.

setFontColor

void setFontColor (CColor color);

Задаёт фоновый цвет.

getFontColor

CColor getFontColor ();

Запрашивает текущий фоновый цвет.

setFont

void setFont (CFont fontID, const long size = 0, long style = 0);

Задаёт используемый шрифт, где style — это константа с класса CTxtFace.

Класс CTxtFace

#include <vstgui.h>

enum CTxtFace;

Определяет стиль отображения текста.

Значение Описание
kNormalFace стандартный
kBoldFace жирный
kItalicFace курсив
kUnderlineFace подчёркнутый

getFont

CFontgetFont ();

Определяет текущий шрифт.

getStringWidth

long getStringWidth (const char *pStr);

Возвращает ширину строки ( заданного текста в заданном шрифте ) в пикселях.

drawString

void drawString (const char *string, CRect& rect,
const short opaque = false, const CHoriTxtAlignhAlign = kCenterText));

Строка ограничена размерами заданного прямоугольника, с использованием заданного выравнивания.

getMouseButtons

long getMouseButtons ();

Возвращает текущее использование кнопки мыши (смотри CButton)

getMouseLocation

void getMouseLocation (CPoint& point);

Определяет текущую позицию курсора мыши.

WaitDoubleClick

bool waitDoubleClick ();

Ожидание двойного щелчка. Возвращает ПРАВДУ в случае появления данного события.

waitDrag

bool waitDrag ();

Ожидание перетаскивания файла/объекта. Возвращает ПРАВДУ в случае появления данного события.

getWindow

void *getWindow ();

Возвращает используемое окно заданного слоя/области.

setWindow

void setWindow (void *ptr);

Задаёт окно заданному слою/области.

getLoc

void getLoc (CPoint& where);

Возвращает текущую позицию инструмента рисования «карандаш».

Пример:

void ScoView::update (CDrawContext *context) {
long x, y;
CPoint p;
CColor  greenColor = {0, 255, 0, 0};
context->setFrameColor (greenColor);
context->moveTo (p(x, y));

// рисуем линию
context->lineTo (p(x, y));
}

getFrame

CFrame *getFrame ();

Определяет используемый слой/область.

getSystemContext

void *getSystemContext ();

COffscreenContext

#include <vstgui.h>class COffscreenContext : public CDrawContext;

С помощью данного класса Вы сможете создавать растровые изображения на лету, в реальном времени, используя методы прорисовки описанные в только что рассмотренном классе CDrawContext.

COffscreenContext

COffscreenContext (CDrawContext *context, CBitmap *bitmap);

Создаёт фон из заданного изображения bitmap.

COffscreenContext

COffscreenContext (CFrame *frame, long width, long height, const CColor backgroundColor = kBlackCColor);

Создаёт фон из заданного изображения bitmap. При этом с помощью  width Вы можете задавать ширину, height — высоту и backgroundColor — фоновый цвет.

~COffscreenContext

virtual ~COffscreenContext ();

Удаление фонового изображения.

copyFrom

void copyFrom (CDrawContext *pContext, CRect destRect, CPoint srcOffset = CPoint (0, 0));

Копирует фоновое изображение pContext в указанное место destRect с указазанной офсет-позицией srcOffset.

Пример:

bitmapOc = new CBitmap (128);
...

void ScoView::draw (CDrawContext *pContext)
{
    // Локальная часть
    COffscreenContext *oc = new COffscreenContext (
        getParent (), 80, 100, kBlackCColor
    );

    CRect rctScreen (0, 0, 80, 100);

    // рисуем фон
    if (bitmapOc)
        bitmapOc>draw (oc, rctScreen);

    long x, y;
    CPoint p;
    CColor greenColor = {0, 255, 0, 0};
    oc->setFrameColor (greenColor);
    oc->moveTo (p(x, y));
    ...
    // рисуем линию
    oc->lineTo (p(x, y));
    ...
    // копируем из фона в заданное место
    CRect rect (20, 50, 100, 150);
    oc->copyFrom (context, rect, p (0, 0));

    // не забывайте удалить фон
    delete oc;
}

copyTo

void copyTo (CDrawContext* pContext, CRect& srcRect, CPoint destOffset = CPoint (0, 0));

Альтернатива предыдущему методу, используется для создания фона определённого поля.

transfert

void transfert (CDrawContext *context, CRect destRect, CPoint srcOffset = CPoint (0, 0));

Передаёт фоновое (закадровое) изображение context в заданное место destRect с заданной позицией srcOffset.

Заметка: возможно данный метод в будущем будет полностью заменён методом copyFrom.

getWidth

int getWidth ();

Определяет ширину фонового изображения.

getHeight

int getHeight ();

Определяет высоту фонового изображения.

Вы должны быть залогинены для комментирования.