mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.9 KiB
70 lines
1.9 KiB
|
|
/*************************************************
|
|
* splstno.cpp *
|
|
* *
|
|
* Copyright (C) 1995-1999 Microsoft Inc. *
|
|
* *
|
|
*************************************************/
|
|
|
|
// splstno.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "dib.h"
|
|
#include "dibpal.h"
|
|
#include "spriteno.h"
|
|
#include "splstno.h"
|
|
#include "sprite.h"
|
|
#include "phsprite.h"
|
|
#include "myblock.h"
|
|
#include "spritlst.h"
|
|
#include "osbview.h"
|
|
#include "blockvw.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSpriteListNotifyObj
|
|
|
|
CSpriteListNotifyObj::CSpriteListNotifyObj()
|
|
{
|
|
m_pSpriteList = NULL;
|
|
m_pBlockView = NULL;
|
|
}
|
|
|
|
CSpriteListNotifyObj::~CSpriteListNotifyObj()
|
|
{
|
|
}
|
|
|
|
// Notification callback from a CSprite object
|
|
void CSpriteListNotifyObj::Change(CSprite *pSprite,
|
|
CHANGETYPE change,
|
|
CRect* pRect1,
|
|
CRect* pRect2)
|
|
{
|
|
if (change & CSpriteNotifyObj::ZORDER)
|
|
{
|
|
// reposition the sprite in the z-order list
|
|
ASSERT(m_pSpriteList);
|
|
m_pSpriteList->Reorder(pSprite);
|
|
// Add the sprite position to the dirty list
|
|
ASSERT(m_pBlockView);
|
|
m_pBlockView->AddDirtyRegion(pRect1);
|
|
}
|
|
if (change & CSpriteNotifyObj::IMAGE)
|
|
{
|
|
ASSERT(m_pBlockView);
|
|
m_pBlockView->AddDirtyRegion(pRect1);
|
|
}
|
|
if (change & CSpriteNotifyObj::POSITION)
|
|
{
|
|
// pRect1 and pRect2 point to old and new rect positions
|
|
// add these rects to the dirty list
|
|
ASSERT(m_pBlockView);
|
|
m_pBlockView->AddDirtyRegion(pRect1);
|
|
m_pBlockView->AddDirtyRegion(pRect2);
|
|
}
|
|
}
|