Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Properties | Events

Romulus.Nes.ScreenView Class Reference

Represents a screen within a ScreenViewport. More...

Inheritance diagram for Romulus.Nes.ScreenView:
Romulus.Nes.EmptyScreenView

List of all members.

Public Member Functions

 ScreenView ()
 Creates a new ScreenView.
Bitmap GetScreenImage ()
 Gets the back-buffer containing the rendered screen image.
void Invalidate (Graphics g)
 Causes this ScreenView to be redrawn in the ScreenViewport by raising the Paint event.
void Invalidate (Rectangle worldClipRect, Graphics g)
 Causes this ScreenView to be redrawn in the ScreenViewport by raising the Paint event.
void Redraw ()
 Renders and invalidates this screen editor.
void Invalidate ()
 Causes the ScreenViewport to repaint this ScreenView.
void RenderScreen ()
 Constructs the nametable and renders a game-screen image. This does not involve actually painting the game-screen to the control.
void Dispose ()
 Frees resources used by this object.

Public Attributes

const int ScreenImageWidth = 256
 Gets the width of the screen image.
const int ScreenImageHeight_Full = 256
 Gets the height of the screen image.
const int ScreenImageHeight_Clipped = 240
 Gets the height of an NTSC display.

Protected Member Functions

virtual NameTableRenderer CreateScreenRenderer ()
 This method should be overridden in a derived class that needs to use a custom NameTableRenderer.
virtual void OnPaint (Graphics g, Rectangle controlClipRect, Rectangle clippedSourceRect)
 Called to redraw the ScreenView's buffer contents to the containing control.
virtual void OnGetFocus ()
 Called when this ScreenView gets focus.
virtual void OnLoseFocus ()
 Called when this ScreenView loses focus.
virtual void OnBeforeRender ()
 Override this method to do any initialization needed before rendering.
virtual void OnConstructSpriteList (NameTableRenderer nametable)
 Override to construct the sprite list.
virtual void OnClearSpriteList (System.ComponentModel.CancelEventArgs cancel)
 Override this method if it may be necessary to NOT clear the sprite list.
virtual void OnConstructNametable ()
 Override this method to provide name-table creation logic.
virtual void ApplySpritePalette (CompositePalette spritePalette, int paletteIndex)
 Override this method to change the usage or application of palettes to the backbuffer. Do not override this method to change which colors will be used for sprites.
virtual void ApplyBgPalette (CompositePalette palette, int paletteIndex)
 Override this method to change the usage or application of palettes to the backbuffer. Do not override this method to change which colors will be used for backgrounds.
virtual void OnLoadBgPalette (ReturnEventArgs< CompositePalette > result)
 Override this method to specify a background palette for the ScreenView.
virtual void OnLoadSpritePalette (ReturnEventArgs< CompositePalette > result)
 Override this method to specify a background palette for the ScreenView.
virtual void CustomRender (Blitter b)
 Override this method to perform additional rendering after the nametable is rendered.
virtual void OnAfterRender ()
 Override this method to run logic after the screen render is complete.
virtual void OnMouseUp (MouseEventArgs e, int screenX, int screenY)
 Override this method to handle the mouse-up event.
virtual void OnMouseDown (MouseEventArgs e, int screenX, int screenY)
 Override this method to handle the mouse-down event.
virtual void OnMouseMove (MouseEventArgs e, int screenX, int screenY)
 Override this method to handle the mouse-move event.

Protected Attributes

Bitmap ScreenBitmap
 The screen image is drawn to this buffer.

Properties

bool IsEmpty [get]
 Returns true if this is an EmptyScreenView.
CellIndex GridLocation [get, set]
 Gets/sets the grid location of this ScreenView within the ScreenViewport.
SmallNameTable NameTable [get]
 Gets this ScreenView's nametable.
Bitmap Patterns [get, set]
 Gets/sets the background pattern table used in this screen.
Bitmap SpritePatterns [get, set]
 Gets/sets the sprite pattern table used in this screen.
ScreenViewport Viewport [get, set]
 Gets the ScreenViewport that contains this ScreenView.
Rom Rom [get]
 Gets the ROM image to load data from.
bool HasFocus [get]
 Returns true if this ScreenView has input focus.
NameTableRenderer Renderer [get]
 Gets the NameTableRenderer used by this ScreenView.
byte SelectionColor [get, set]
 The color used for the selection rectangle.
Rectangle Selection [get, set]
 The location to draw the selection rectangle. Specify Rectangle.Empty to hide the selection rectangle.
Rectangle WorldBounds [get]
 Gets the location of this ScreenView within the entire scrollable area of the ScreenViewport.
Rectangle ScreenBounds [get]
 Gets the location of this ScreenView within the visible portion of the ScreenViewport.

Events

EventHandler BeforeRender
 Handle this event to run logic immediately before rendering.
EventHandler< EventArgs
< NameTableRenderer > > 
ConstructSpriteList
 Handle this event to supply a list of sprites to render.
EventHandler AfterRender
 Handle this event to perform logic immediately after rendering is complete.
EventHandler
< System.ComponentModel.CancelEventArgs > 
ClearSpriteList
 Handle this event to prevent the sprite list from being cleared each frame.
EventHandler< ReturnEventArgs
< CompositePalette > > 
LoadSpritePalette
 Handle this event to specify a background palette for the ScreenView.
EventHandler< ReturnEventArgs
< CompositePalette > > 
LoadBgPalette
 Handle this event to specify a background palette for the ScreenView.
EventHandler ConstructNametable
 Handle this event to supply the data used to render the background.
EventHandler< OnPaintEventArgsPaint
 Raised when the ScreenView is drawing its backbuffer to the ScreenViewport control.
EventHandler GetFocus
 Raised when this ScreenView recieves input focus.
EventHandler LoseFocus
 Raised when this ScreenView loses input focus.

Detailed Description

Represents a screen within a ScreenViewport.

This class should be inherited to create a game or purpose specific screen view.


Constructor & Destructor Documentation

Romulus.Nes.ScreenView.ScreenView (  ) 

Creates a new ScreenView.

The ScreenView will create its own back buffer, ScreenRenderer, and blitter.


Member Function Documentation

virtual void Romulus.Nes.ScreenView.ApplyBgPalette ( CompositePalette  palette,
int  paletteIndex 
) [protected, virtual]

Override this method to change the usage or application of palettes to the backbuffer. Do not override this method to change which colors will be used for backgrounds.

Parameters:
palette The colors that will be used for backgrounds.
paletteIndex The location where background palette data should be used.

This method should not be overridden except in scenarios where you need to change the way that the backbuffer's palette is used. This need could arise from using a custom blitter that uses palettes differently, or from needing to use additional colors in addition to the specified palette.

virtual void Romulus.Nes.ScreenView.ApplySpritePalette ( CompositePalette  spritePalette,
int  paletteIndex 
) [protected, virtual]

Override this method to change the usage or application of palettes to the backbuffer. Do not override this method to change which colors will be used for sprites.

Parameters:
spritePalette The colors that will be used for sprites.
paletteIndex The location where sprite palette data should be used.

This method should not be overridden except in scenarios where you need to change the way that the backbuffer's palette is used. This need could arise from using a custom blitter that uses palettes differently, or from needing to use additional colors in addition to the specified palette.

virtual NameTableRenderer Romulus.Nes.ScreenView.CreateScreenRenderer (  )  [protected, virtual]

This method should be overridden in a derived class that needs to use a custom NameTableRenderer.

virtual void Romulus.Nes.ScreenView.CustomRender ( Blitter  b  )  [protected, virtual]

Override this method to perform additional rendering after the nametable is rendered.

This function is not called directly by the ScreenView. Instead, it is called by the NameTableRenderer. Therefore, using a custom NameTableRenderer could potentially affect the behavior or usage of this function.

void Romulus.Nes.ScreenView.Dispose (  ) 

Frees resources used by this object.

Bitmap Romulus.Nes.ScreenView.GetScreenImage (  ) 

Gets the back-buffer containing the rendered screen image.

Returns:
A bitmap containing the screen image.
void Romulus.Nes.ScreenView.Invalidate ( Rectangle  worldClipRect,
Graphics  g 
)

Causes this ScreenView to be redrawn in the ScreenViewport by raising the Paint event.

The screen will not be re-rendered. This is a UI-related painting function.

Parameters:
g The graphics object the screen will be drawn to.
worldClipRect A clipping rectangle to be used during painting.
void Romulus.Nes.ScreenView.Invalidate ( Graphics  g  ) 

Causes this ScreenView to be redrawn in the ScreenViewport by raising the Paint event.

The screen will not be re-rendered. This is a UI-related painting function.

Parameters:
g The graphics object the screen will be drawn to.
void Romulus.Nes.ScreenView.Invalidate (  ) 

Causes the ScreenViewport to repaint this ScreenView.

virtual void Romulus.Nes.ScreenView.OnAfterRender (  )  [protected, virtual]

Override this method to run logic after the screen render is complete.

virtual void Romulus.Nes.ScreenView.OnBeforeRender (  )  [protected, virtual]

Override this method to do any initialization needed before rendering.

virtual void Romulus.Nes.ScreenView.OnClearSpriteList ( System.ComponentModel.CancelEventArgs  cancel  )  [protected, virtual]

Override this method if it may be necessary to NOT clear the sprite list.

Parameters:
cancel Use this object to cancel the clearing of the sprite list.
virtual void Romulus.Nes.ScreenView.OnConstructNametable (  )  [protected, virtual]

Override this method to provide name-table creation logic.

virtual void Romulus.Nes.ScreenView.OnConstructSpriteList ( NameTableRenderer  nametable  )  [protected, virtual]

Override to construct the sprite list.

Parameters:
nametable The nametable to write sprite data to.
virtual void Romulus.Nes.ScreenView.OnGetFocus (  )  [protected, virtual]

Called when this ScreenView gets focus.

virtual void Romulus.Nes.ScreenView.OnLoadBgPalette ( ReturnEventArgs< CompositePalette result  )  [protected, virtual]

Override this method to specify a background palette for the ScreenView.

Parameters:
result 
virtual void Romulus.Nes.ScreenView.OnLoadSpritePalette ( ReturnEventArgs< CompositePalette result  )  [protected, virtual]

Override this method to specify a background palette for the ScreenView.

Parameters:
result 
virtual void Romulus.Nes.ScreenView.OnLoseFocus (  )  [protected, virtual]

Called when this ScreenView loses focus.

virtual void Romulus.Nes.ScreenView.OnMouseDown ( MouseEventArgs  e,
int  screenX,
int  screenY 
) [protected, virtual]

Override this method to handle the mouse-down event.

Parameters:
e The mouse event args for the containing control.
screenX The mouse position relative to this ScreenView.
screenY The mouse position relative to this ScreenView.
virtual void Romulus.Nes.ScreenView.OnMouseMove ( MouseEventArgs  e,
int  screenX,
int  screenY 
) [protected, virtual]

Override this method to handle the mouse-move event.

Parameters:
e The mouse event args for the containing control.
screenX The mouse position relative to this ScreenView.
screenY The mouse position relative to this ScreenView.
virtual void Romulus.Nes.ScreenView.OnMouseUp ( MouseEventArgs  e,
int  screenX,
int  screenY 
) [protected, virtual]

Override this method to handle the mouse-up event.

Parameters:
e The mouse event args for the containing control.
screenX The mouse position relative to this ScreenView.
screenY The mouse position relative to this ScreenView.
virtual void Romulus.Nes.ScreenView.OnPaint ( Graphics  g,
Rectangle  controlClipRect,
Rectangle  clippedSourceRect 
) [protected, virtual]

Called to redraw the ScreenView's buffer contents to the containing control.

Parameters:
g The graphics object used to draw to the control.
controlClipRect The rectangle one the ScreenViewport that will be drawn to by this ScreenView.
clippedSourceRect The portion of the buffer that will be drawn to the ScreenViewport.
void Romulus.Nes.ScreenView.Redraw (  ) 

Renders and invalidates this screen editor.

void Romulus.Nes.ScreenView.RenderScreen (  ) 

Constructs the nametable and renders a game-screen image. This does not involve actually painting the game-screen to the control.


Member Data Documentation

The screen image is drawn to this buffer.

Gets the height of an NTSC display.

Gets the height of the screen image.

Gets the width of the screen image.


Property Documentation

CellIndex Romulus.Nes.ScreenView.GridLocation [get, set]

Gets/sets the grid location of this ScreenView within the ScreenViewport.

bool Romulus.Nes.ScreenView.HasFocus [get]

Returns true if this ScreenView has input focus.

bool Romulus.Nes.ScreenView.IsEmpty [get]

Returns true if this is an EmptyScreenView.

SmallNameTable Romulus.Nes.ScreenView.NameTable [get]

Gets this ScreenView's nametable.

Bitmap Romulus.Nes.ScreenView.Patterns [get, set]

Gets/sets the background pattern table used in this screen.

NameTableRenderer Romulus.Nes.ScreenView.Renderer [get, protected]

Gets the NameTableRenderer used by this ScreenView.

Rom Romulus.Nes.ScreenView.Rom [get]

Gets the ROM image to load data from.

Rectangle Romulus.Nes.ScreenView.ScreenBounds [get]

Gets the location of this ScreenView within the visible portion of the ScreenViewport.

Rectangle Romulus.Nes.ScreenView.Selection [get, set]

The location to draw the selection rectangle. Specify Rectangle.Empty to hide the selection rectangle.

byte Romulus.Nes.ScreenView.SelectionColor [get, set]

The color used for the selection rectangle.

Bitmap Romulus.Nes.ScreenView.SpritePatterns [get, set]

Gets/sets the sprite pattern table used in this screen.

ScreenViewport Romulus.Nes.ScreenView.Viewport [get, set]

Gets the ScreenViewport that contains this ScreenView.

Rectangle Romulus.Nes.ScreenView.WorldBounds [get]

Gets the location of this ScreenView within the entire scrollable area of the ScreenViewport.


Event Documentation

EventHandler Romulus.Nes.ScreenView.AfterRender

Handle this event to perform logic immediately after rendering is complete.

Although a ScreenViewport can implement behavior by handling this event, the preferred method is creating a class that inherits ScreenView and overrides protected members.

EventHandler Romulus.Nes.ScreenView.BeforeRender

Handle this event to run logic immediately before rendering.

Although a ScreenViewport can implement behavior by handling this event, the preferred method is creating a class that inherits ScreenView and overrides protected members.

EventHandler<System.ComponentModel.CancelEventArgs> Romulus.Nes.ScreenView.ClearSpriteList

Handle this event to prevent the sprite list from being cleared each frame.

Although a ScreenViewport can implement behavior by handling this event, the preferred method is creating a class that inherits ScreenView and overrides protected members.

EventHandler Romulus.Nes.ScreenView.ConstructNametable

Handle this event to supply the data used to render the background.

Although a ScreenViewport can implement behavior by handling this event, the preferred method is creating a class that inherits ScreenView and overrides protected members.

EventHandler<EventArgs<NameTableRenderer> > Romulus.Nes.ScreenView.ConstructSpriteList

Handle this event to supply a list of sprites to render.

Although a ScreenViewport can implement behavior by handling this event, the preferred method is creating a class that inherits ScreenView and overrides protected members.

EventHandler Romulus.Nes.ScreenView.GetFocus

Raised when this ScreenView recieves input focus.

EventHandler<ReturnEventArgs<CompositePalette> > Romulus.Nes.ScreenView.LoadBgPalette

Handle this event to specify a background palette for the ScreenView.

Although a ScreenViewport can implement behavior by handling this event, the preferred method is creating a class that inherits ScreenView and overrides protected members.

EventHandler<ReturnEventArgs<CompositePalette> > Romulus.Nes.ScreenView.LoadSpritePalette

Handle this event to specify a background palette for the ScreenView.

Although a ScreenViewport can implement behavior by handling this event, the preferred method is creating a class that inherits ScreenView and overrides protected members.

EventHandler Romulus.Nes.ScreenView.LoseFocus

Raised when this ScreenView loses input focus.

EventHandler<OnPaintEventArgs> Romulus.Nes.ScreenView.Paint

Raised when the ScreenView is drawing its backbuffer to the ScreenViewport control.


The documentation for this class was generated from the following file:
 All Classes Namespaces Functions Variables Enumerations Properties Events