A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

CD resumo do curso preparado pelo Ovídio (by Rodrigo Toledo) CD.

Apresentações semelhantes


Apresentação em tema: "CD resumo do curso preparado pelo Ovídio (by Rodrigo Toledo) CD."— Transcrição da apresentação:

1 CD resumo do curso preparado pelo Ovídio (by Rodrigo Toledo) CD

2 Estrutura do Curso Pré-requisitos Conceitos de programação
Linguagem de programação C IUP Objetivos Apresentar o CD Verificar as vantagens da utilização do CD Utilizar o CD para desenhar gráficos Relacionar o CD com outros sistemas de programação CD

3 Apresentação Canvas Draw (CD) é um sistema gráfico portátil, projetado para ser usado em conjunto com o sistema IUP. Sua implementação foi baseada nos seguintes sistemas gráficos: Microsoft Windows (GDI), Macintosh (QuickDraw), X-Windows (XLIB) e DOS (VESA e VGA). O CD foi projetado para ser um sistema simples, pequeno e totalmente adaptado às novas tecnologias que surgiram desde o padrão GKS (e gl_canvas). CD

4 Conteúdo Motivação e características do CD CD IM LUA Arquitetura
Descrição conceitual Primitivas de desenho IM LUA CD

5 Motivação Manter as aplicações portáteis.
Simplificar a API (Application Programmers Interface): Todos os dados são tipos básicos de C (int, double ou char). A lista de parâmetros das funções primitivas contêm apenas a descrição geométrica dos objetos (linhas, círculos, texto, etc). Aproveitar as novas tecnologias desenvolvidas após o GKS. Viabilizar o tratamento de imagens rasters. CD

6 Características do CD Multiplataforma Simples Vetorial & Raster
O gráfico é desenhado em apenas um dispositivo de cada vez. Não possui tratamento para uso incorreto das funções. Chamadas incorretas podem resultar invasão de memória. Vetorial & Raster Viabiliza a integração com outros sistemas - CDPLAY Flexível Mesmo sendo projetado para ser usado com o IUP, um mecanismo foi inventado para utilizá-lo separadamente. Expansível Permite a criação de novos drivers sem limite. CD

7 Arquitetura Aplicação CD Macintosh Motif Windows Dos CD

8 Descrição Conceitual - Modelo
O CD usa o conceito de superfície de visualização virtual (VVS). Uma VVS pode ser o canvas de um diálogo IUP, a página de um documento enviado para a impressora, uma imagem offscreen, o clipboard, um metafile, a memória ou arquivos gráficos (CGM, WMF, EMF, PS, DXF, DGN, CDM). Por questões de simplificação a VVS também será chamada de canvas. As funções do CD podem ser classificadas da seguinte maneira: Controle Funções para criar, ativar e fechar uma VVS, além de outras funções de controle. Sistema de Coordenadas e Clipping Controlam a área de clipping, o tamanho da VVS, convertem unidades (mm x pixel) e podem relacionar coordenadas de mundo com as da tela. Primitivas Funções de desenho, entre elas: linhas, poligonais, retângulos, arcos, marcas e textos. Atributos Modificam e consultam atributos das primitivas. Cores e Imagens Funções relacionadas às cores e imagens. CD

9 Funções de Controle - I Valores possíveis para driver:
cdCanvas *cdCreateCanvas(cdContext* driver, void *data) driver: Define uma VVS (canvas) data: Informações adicionais. Esta relacionado com o parâmetro driver. retorno: Retorna um ponteiro para a área de memória criada ou NULL em caso de alguma falha. Ainda que seja possível criar mais de um canvas com o mesmo par driver/data, isso não é recomendado e seu comportamento não é especificado. Cada canvas armazena em memória um contexto próprio com seus atributos e valores. Arquivos Valores possíveis para driver: CD_WMF CD_EMF CD_METAFILE CD_PS CD_IMAGE CD_IMAGERGB Imagem CD_PRINTER CD_CLIPBOARD CD_SIMULATE Dispositivos CD_CGM CD_DGN CD_DXF CD_IUP CD_NATIVEWINDOW Janelas CD

10 Funções de Controle - II
int cdActivate(cdCanvas *canvas) retorno: CD_OK ou CD_ERROR, indicando se o canvas foi ativado com sucesso ou não. void cdFlush(void) void cdClear(void) void cdKillCanvas(cdCanvas *canvas) cdCanvas* cdActiveCanvas(void) retorno: O canvas ativo no momento. char* cdVersion(void) retorno: A versão da biblioteca. CD

11 Funções de Coordenadas e Clipping
void cdGetCanvasSize(int *width, int *height, double *mm_width, double *mm_height) int cdClip(int mode) mode: CD_CLIPAREA, CD_CLIPPOLYGON, CD_CLIPOFF ou CD_QUERY Para o modo CD_CLIPPOLYGON é preciso usar a função cdBegin, para definir o polígono de clipping. retorno: o status anterior. void cdClipArea(int xmin, int xmax, int ymin, int ymax) int cdGetClipArea(int *xmin, int *xmax, int *ymin, int *ymax) retorno: o retângulo e o status de clipping correntes. void cdCanvas2Raster(int *x, int *y) Do CD para o IUP. void cdMM2Pixel(double mm_dx, double mm_dy, int *dx, int *dy) void cdPixel2MM(int dx, int dy, double *mm_dx, double *mm_dy) CD

12 Funções de Coordenadas de Mundo - wd
Utilizam a metáfora Window-Viewport para definir um sistema de coordenadas de mundo em qualquer unidade. Para usar qualquer uma destas funções , você deve ativar o canvas através da função wdActivate e incluir o arquivo wd.h. Todas as funções de primitivas da biblioteca CD têm uma implementação equivalente em WD, de forma que é possível desenhar primitivas especificando coordenadas de mundo. CD

13 Prática 1 - Primitivas Gráficas
Execute o programa CDTest (praticas\cdtest). O programa CDTest foi elaborado para testar o CD e como tem uma grande interatividade com o usuário, permite ao programador verificar o funcionamento de todas funções e atributos da biblioteca CD. Siga as instruções do instrutor para obter o máximo proveito do programa. O código fonte é liberado como exemplo. CD

14 Funções de Atributos As informações a respeito de como as primitivas gráficas devem aparecer, qual a cor, espessura e etc, são definidas como variáveis de estado corrente e armazenadas em cada canvas criado. Desta maneira os atributos de um canvas não interferem nos de outro. A modificação do estado de um atributo somente afetará o canvas ativo e todas as primitivas desenhadas nesse canvas que dependem do atributo serão desenhadas de um modo diferente. Para um lista completa dos atributos, consulte o manual em Funções/Atributos. CD

15 Guia de Programação C A programação deve levar em consideração:
A função IupShow gera eventos resize e repaint. Para desenhar alguma coisa no canvas ele já deve estar criado e ativo. Para criar um canvas CD_IUP ele precisa estar mapeado na memória. void main(void) { cdCanvas *canvas; IupOpen (); IupLoad ("ex1.led"); /* Mapeando o CANVAS */ IupMap (IupGetHandle("dial")); /* Criando o CANVAS */ canvas = cdCreateCanvas (CD_IUP, IupGetHandle("canv")); /* Registrando as callbacks */ IupSetFunction ("Acao_redesenha",(Icallback)Acao_redesenha); IupSetFunction ("Acao_tamanho",(Icallback) Acao_tamanho); IupSetFunction ("Acao_scroll",(Icallback) Acao_scroll); /* Exibindo o diálogo e entrando no loop de eventos */ IupShow (IupGetHandle("dial")); IupMainLoop (); /* Fechando o canvas criado */ cdKillCanvas(canvas); IupClose(); } CD

16 Prática 2 - Primeiro Programa
Use o pfe para observar o código fonte Ex1.c no diretório praticas\1. O programa Ex1, tem como principal objetivo mostrar ao aluno a programação necessária aos principais eventos que ocorrem num canvas, bem como desenhar algumas primitivas que também podem ser exportadas. O instrutor informará as tarefas de acordo com o objetivo e tempo disponível no curso. CD

17 Imagens I - CD_IMAGE O CD trabalha com dois tipos de imagens denominadas no manual como imagem de servidor e imagem de cliente. A imagem de servidor é de alto desempenho, se baseia nos recursos disponíveis no sistema e devido a isso é amplamente dependente da plataforma. Tem um formato interno inacessível ao programador e é usada principalmente para implementar desenhos offscreen, técnica também conhecida como double buffer. CD

18 Imagens II - CD_IMAGERGB
A imagem de cliente foi especificada para dar mais flexibilidade ao programador sendo todas as primitivas implementadas independentemente dos sistemas. Este tipo de imagem viabiliza o tratamento de imagens pois pode-se desenhar em imagens já existentes. Existem dois tipos de imagens de cliente: RGB e RGB Indexada. A imagem RGB é composta por 3 buffers: vermelho, verde e azul, 24 bits por pixel (8 para cada buffer), este tipo pode dispor de mais cores, porém gastará mais memória. A RGB Indexada (também chamada imagem baseada em paleta) é composta por um buffer de índices e uma tabela de valores RGB codificados. Desta maneira ocorre uma economia da memória, porém menos cores estarão disponíveis. CD

19 Comparação: Direta x Indexada
Para uma imagem de 640x480 pixels, armazenadas em memória segundo as duas possibilidades, teremos: 1o.) True Color (24 bits): 640 x 480 x 24 = bits = bytes 2o.) Peseudo Color (256 cores = 28 cores): (640 x 480 x 8) + (256 x 24) = bits = bytes Observações: 256 x 24 => Tabela de 256 posisções. 24 => 3 buffers de 8 bits. (1 buffer p/ cada cor primária) CD

20 Servidor x Cliente Funções de Imagens cdPutImage cdGetImage
cdScrollImage cdPutImageRect cdCreateImage cdKillImage cdPutImageRGB cdGetImageRGB cdPutImageRGBA cdPutImageMap CD

21 Funções de Cores cdEncodeColor cdDecodeColor cdForeground cdBackground
VALORES PREDEFINIDOS CD_RED CD_GREEN CD_BLUE CD_DARK_RED CD_DARK_GREEN CD_DARK_BLUE CD_YELLOW CD_MAGENTA CD_CYAN CD_DARK_YELLOW, CD_DARK_MAGENTA CD_DARK_CYAN CD_WHITE CD_BLACK CD_DARK_GRAY CD_GRAY cdEncodeColor cdDecodeColor cdForeground cdBackground cdGetColorPlanes cdPalette CD

22 Facilidades da Biblioteca IM
A biblioteca IM tem como objetivo ler e escrever imagens bitmaps (raster) em vários formatos, tais como: BMP, PCX, GIF, TIF, etc... A IM possui total compatibilidade com o CD de forma que as imagens lidas pelas funções da IM podem ser mostradas em um canvas CD e os desenhos do canvas também podem ser salvos nos formatos suportados pela IM. Para uma informação detalhada e completa, inclusive com exemplos, veja o manual on-line em: CD

23 Programando CD em LUA A biblioteca CDLua foi desenvolvida para disponibilizar todas as funcionalidades da biblioteca CD para programadores LUA. Foi escrita em C, com auxílio do utilitário toLua (uma ferramenta para gerar automaticamente ligações C/C++ e LUA). Juntamente com IUPLua, IMLua, DBLua dentre outras, o CDLua completa o ambiente de progamação LUA. CD

24 Importanto Desenhos - CDPLAY
Interpreta o conteúdo gráfico (primitivas e atributos) em um determinado driver e chama funções equivalentes da biblioteca CD utilizando o canvas ativo. As primitivas são geradas dentro da caixa definida pelas coordenadas dadas. Apenas alguns drivers têm esta função implementada. int cdPlay (cdContext driver, int xmin, int xmax, int ymin, int ymax, void *data) CD_CLIPBOARD CD_WMF CD_EMF CD_CGM CD_METAFILE Disponibilidade: CD

25 Dicas úteis Onde encontrar ( Plataforma PC) Manual on-line
\\SIGMA\CENPESN\TECGRAF\CD Manual on-line No CENPES: \\SIGMA\CENPESN\TECGRAF\CD \html\index.html Apoio CENPES Ramal: 6806 Outras plataformas Solicitar instalação. Já temos: AIX, SunOS, Solaris, IRIX, Linux (todos UNIX) e Alpha/Vms CD


Carregar ppt "CD resumo do curso preparado pelo Ovídio (by Rodrigo Toledo) CD."

Apresentações semelhantes


Anúncios Google