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

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

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

Apresentações semelhantes


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

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

2 CD2 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

3 CD3 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).

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

5 CD5 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.

6 CD6 Características do CD Multiplataforma Simples 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.

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

8 CD8 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.

9 CD9 Funções de Controle - I 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. Valores possíveis para driver: 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. CD_IUP CD_NATIVEWINDOW Janelas CD_CGM CD_DGN CD_DXF CD_WMF CD_EMF CD_METAFILE CD_PS Arquivos CD_PRINTER CD_CLIPBOARD CD_SIMULATE Dispositivos CD_IMAGE CD_IMAGERGB Imagem

10 CD10 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.

11 CD11 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)

12 CD12 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.

13 CD13 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.

14 CD14 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.

15 CD15 Guia de Programação C 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(); } 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.

16 CD16 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.

17 CD17 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.

18 CD18 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.

19 CD19 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 = 2 8 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)

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

21 CD21 Funções de Cores cdEncodeColor cdDecodeColor cdForeground cdBackground cdGetColorPlanes cdPalette 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

22 CD22 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:

23 CD23 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.

24 CD24 Importanto Desenhos - CDPLAY Disponibilidade: 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

25 CD25 Dicas úteis Onde encontrar ( Plataforma PC) \\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


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

Apresentações semelhantes


Anúncios Google