This page was last modified 16:06, 27 October 2007.
Acesso Direto à Tela (DSA)
From Forum Nokia Wiki
Original: Direct Screen Access.
Contents |
Introdução
Acesso direto à tela (do Inglês DSA - Direct Screen Access) é uma maneira de se desenhar na tela sem utilizar o servidor de janelas. Essa alternativa é mais eficiente pois evita a comunicação com o servidor, sendo recomendada para aplicações que lidam com vídeo, e jogos. Entretanto, a comunicação com o servidor de janelas é necessária em alguns momentos para se evitar acessos inválidos a dados de outras aplicações. A classe que implementa o acesso direto à tela (CDirectScreenAccess) é implementada como um objeto ativo:
class CDirectScreenAccess : public CActive;
A seguir, alguns dos membros definidos nessa classe.
DrawingRegion()
Retorna qual é a área da tela onde as operações de desenho devem ser feitas.
inline RRegion *DrawingRegion();
Gc()
Retorna o contexto gráfico que será usado para se desenhar na tela. Esse contexto é criado pela classe ao se iniciar o acesso direto através de StartL(). As partes da tela onde serão feitos os desenhos devem ser especificadas como coordenadas da janela, e a área permitida para desenho é determinada pelo objeto RRegion obtido por DrawingRegion().
inline CFbsBitGc *Gc();
NewL()
Cria uma instância da classe de acesso direto à tela, e a adiciona ao escalonador ativo atual.
static CDirectScreenAccess *NewL (RWsSession &aWs, CWsScreenDevice &aScreenDevice, RWindowBase &aWin, MDirectScreenAccess &aAbort);
ScreenDevice()
Recupera a tela onde as operações de desenho serão realizadas.
inline CFbsScreenDevice *&ScreenDevice();
StartL()
Informa o servidor de janelas que o acesso direto à tela será iniciado, de modo que um contexto gráfico será criado para que seja possível desenhar na tela.
void StartL();
Observações
A interface MDirectScreenAccess deve ser usada para reiniciar o acesso direto à tela, quando for necessário.
virtual void Restart (RDirectScreenAccess::TTerminationReasons aReason)=0;
Essa função é chamada pelo servidor de janelas para indicar que o acesso direto pode ser reiniciado.
Essa função deve chamar o método StartL() da classe CDirectScreenAccess. É importante observar que esse método pode gerar um abandono ("leave"), que deve ser capturado. Caso um abandono seja gerado, significa que o acesso direto não pode ser reiniciado. Quando o método StartL() for executado, a área permitida para desenho será recalculada. Isso significa que se o acesso foi interrompido porque outra janela foi sobreposta à janela que estava sendo desenhada, essa janela sobreposta não será sobrescrita quando o acesso direto for reiniciado.
Links
How to draw image to screen directly
http://discussion.forum.nokia.com/forum/showthread.php?t=30763
--
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Drawing methods | kustom | Symbian Tools & SDKs | 8 | 2003-12-23 11:26 |
| Can AppUi class display text or bmp not by View class in multi-view framework? | deeplife | Symbian User Interface | 2 | 2006-06-07 07:33 |
| Cryptography (cryptalg) API on Series 60? | cbrueckner | Symbian Networking & Messaging | 20 | 2006-10-31 12:05 |
| display tearing, unavoidable? | benjers | General Symbian C++ | 21 | 2003-11-04 17:48 |
| weird Direct Screen Access message... | sopta007 | General Symbian C++ | 0 | 2003-07-07 06:38 |
