本文整理汇总了C++中Bitmap::Fill方法的典型用法代码示例。如果您正苦于以下问题:C++ Bitmap::Fill方法的具体用法?C++ Bitmap::Fill怎么用?C++ Bitmap::Fill使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bitmap
的用法示例。
在下文中一共展示了Bitmap::Fill方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawingSurface_Clear
void DrawingSurface_Clear(ScriptDrawingSurface *sds, int colour)
{
Bitmap *ds = sds->StartDrawing();
int allegroColor;
if ((colour == -SCR_NO_VALUE) || (colour == SCR_COLOR_TRANSPARENT))
{
allegroColor = ds->GetMaskColor();
}
else
{
allegroColor = ds->GetCompatibleColor(colour);
}
ds->Fill(allegroColor);
sds->FinishedDrawing();
}
示例2: DrawBackground
void DrawBackground(Bitmap& bitmap)
{
const int gridSize=8;
unsigned short light=RGB32TO16(0x999999);
unsigned short dark=RGB32TO16(0x666666);
for (int y=0; y<bitmap.GetHeight()/gridSize; y++)
{
for (int x=0; x<bitmap.GetWidth()/gridSize; x++)
{
int c=((x&2)+(y&2))&2;
unsigned short color=(c?light:dark);
bitmap.Fill(x*gridSize,y*gridSize,x*gridSize+gridSize,y*gridSize+gridSize,color);
}
}
}
示例3: Render
void Rectangle::Render(Bitmap& bitmap)
{
if (IsVisible() && width_>0 && height_>0)
{
int x1=(int)(GetX()-GetOriginX());
int y1=(int)(GetY()-GetOriginY());
int x2=x1+(int)GetWidth()-1;
int y2=y1+(int)GetHeight()-1;
if (x1==0 && y1==0 && x2==bitmap.GetWidth()-1 && y2==bitmap.GetHeight()-1 && GetColor()==0 && GetAlpha()==255)
{
bitmap.Clear();
}
else
{
bitmap.Fill(x1,y1,x2,y2,GetColor(),GetAlpha());
}
}
}
示例4: RunAGSGame
int RunAGSGame (const char *newgame, unsigned int mode, int data) {
can_run_delayed_command();
int AllowedModes = RAGMODE_PRESERVEGLOBALINT | RAGMODE_LOADNOW;
if ((mode & (~AllowedModes)) != 0)
quit("!RunAGSGame: mode value unknown");
if (use_compiled_folder_as_current_dir || editor_debugging_enabled)
{
quit("!RunAGSGame cannot be used while running the game from within the AGS Editor. You must build the game EXE and run it from there to use this function.");
}
if ((mode & RAGMODE_LOADNOW) == 0) {
// need to copy, since the script gets destroyed
get_current_dir_path(gamefilenamebuf, newgame);
game_file_name = gamefilenamebuf;
usetup.main_data_filename = game_file_name;
play.takeover_data = data;
load_new_game_restore = -1;
if (inside_script) {
curscript->queue_action(ePSARunAGSGame, mode | RAGMODE_LOADNOW, "RunAGSGame");
ccInstance::GetCurrentInstance()->Abort();
}
else
load_new_game = mode | RAGMODE_LOADNOW;
return 0;
}
int result, ee;
unload_old_room();
displayed_room = -10;
unload_game_file();
if (Common::AssetManager::SetDataFile(game_file_name) != Common::kAssetNoError)
quitprintf("!RunAGSGame: unable to load new game file '%s'", game_file_name.GetCStr());
Bitmap *ds = GetVirtualScreen();
ds->Fill(0);
show_preload();
if ((result = load_game_file ()) != 0) {
quitprintf("!RunAGSGame: error %d loading new game file", result);
}
spriteset.reset();
if (spriteset.initFile ("acsprset.spr"))
quit("!RunAGSGame: error loading new sprites");
if ((mode & RAGMODE_PRESERVEGLOBALINT) == 0) {
// reset GlobalInts
for (ee = 0; ee < MAXGSVALUES; ee++)
play.globalscriptvars[ee] = 0;
}
init_game_settings();
play.screen_is_faded_out = 1;
if (load_new_game_restore >= 0) {
load_game (load_new_game_restore);
load_new_game_restore = -1;
}
else
start_game();
return 0;
}
示例5: unload_old_room
void unload_old_room() {
int ff;
// if switching games on restore, don't do this
if (displayed_room < 0)
return;
Out::FPrint("Unloading room %d", displayed_room);
current_fade_out_effect();
Bitmap *ds = GetVirtualScreen();
ds->Fill(0);
for (ff=0;ff<croom->numobj;ff++)
objs[ff].moving = 0;
if (!play.ambient_sounds_persist) {
for (ff = 1; ff < MAX_SOUND_CHANNELS; ff++)
StopAmbientSound(ff);
}
cancel_all_scripts();
numevents = 0; // cancel any pending room events
if (roomBackgroundBmp != NULL)
{
gfxDriver->DestroyDDB(roomBackgroundBmp);
roomBackgroundBmp = NULL;
}
if (croom==NULL) ;
else if (roominst!=NULL) {
save_room_data_segment();
delete roominstFork;
delete roominst;
roominstFork = NULL;
roominst=NULL;
}
else croom->tsdatasize=0;
memset(&play.walkable_areas_on[0],1,MAX_WALK_AREAS+1);
play.bg_frame=0;
play.bg_frame_locked=0;
play.offsets_locked=0;
remove_screen_overlay(-1);
delete raw_saved_screen;
raw_saved_screen = NULL;
for (ff = 0; ff < MAX_BSCENE; ff++)
play.raw_modified[ff] = 0;
for (ff = 0; ff < thisroom.numLocalVars; ff++)
croom->interactionVariableValues[ff] = thisroom.localvars[ff].value;
// wipe the character cache when we change rooms
for (ff = 0; ff < game.numcharacters; ff++) {
if (charcache[ff].inUse) {
delete charcache[ff].image;
charcache[ff].image = NULL;
charcache[ff].inUse = 0;
}
// ensure that any half-moves (eg. with scaled movement) are stopped
charextra[ff].xwas = INVALID_X;
}
play.swap_portrait_lastchar = -1;
for (ff = 0; ff < croom->numobj; ff++) {
// un-export the object's script object
if (objectScriptObjNames[ff][0] == 0)
continue;
ccRemoveExternalSymbol(objectScriptObjNames[ff]);
}
for (ff = 0; ff < MAX_HOTSPOTS; ff++) {
if (thisroom.hotspotScriptNames[ff][0] == 0)
continue;
ccRemoveExternalSymbol(thisroom.hotspotScriptNames[ff]);
}
// clear the object cache
for (ff = 0; ff < MAX_INIT_SPR; ff++) {
delete objcache[ff].image;
objcache[ff].image = NULL;
}
// clear the actsps buffers to save memory, since the
// objects/characters involved probably aren't on the
// new screen. this also ensures all cached data is flushed
for (ff = 0; ff < MAX_INIT_SPR + game.numcharacters; ff++) {
delete actsps[ff];
actsps[ff] = NULL;
if (actspsbmp[ff] != NULL)
gfxDriver->DestroyDDB(actspsbmp[ff]);
actspsbmp[ff] = NULL;
delete actspswb[ff];
actspswb[ff] = NULL;
if (actspswbbmp[ff] != NULL)
gfxDriver->DestroyDDB(actspswbbmp[ff]);
//.........这里部分代码省略.........
示例6: row
BITMAPINFO *plLayerTex::GetVPDisplayDIB(TimeValue t, TexHandleMaker& thmaker, Interval &valid, BOOL mono, BOOL forceW, BOOL forceH)
{
// FIXME
fTexTime = 0;//CalcFrame(t);
// texValid = clipValid;
BITMAPINFO *bmi = NULL;
int xflags = 0;
if (fBitmapPB->GetInt(kBmpApply))
{
float clipu = fBitmapPB->GetFloat(kBmpClipU);
float clipv = fBitmapPB->GetFloat(kBmpClipV);
float clipw = fBitmapPB->GetFloat(kBmpClipW);
float cliph = fBitmapPB->GetFloat(kBmpClipH);
int discardAlpha = fBitmapPB->GetInt(kBmpDiscardAlpha);
int alphaAsRGB = (fBitmapPB->GetInt(kBmpRGBOutput) == 1);
int w = fBM->Width();
int h = fBM->Height();
Bitmap *newBM;
BitmapInfo bi;
bi.SetName(_T("y8798734"));
bi.SetType(BMM_TRUE_32);
bi.SetFlags(MAP_HAS_ALPHA);
if (fBitmapPB->GetInt(kBmpCropPlace) == 1)
{
int x0, y0, nw, nh;
int bmw = thmaker.Size();
int bmh = int(float(bmw)*float(h)/float(w));
bi.SetWidth(bmw);
bi.SetHeight(bmh);
newBM = TheManager->Create(&bi);
newBM->Fill(0,0,0,0);
nw = int(float(bmw)*clipw);
nh = int(float(bmh)*cliph);
x0 = int(float(bmw-1)*clipu);
y0 = int(float(bmh-1)*clipv);
if (nw<1) nw = 1;
if (nh<1) nh = 1;
PixelBuf row(nw);
Bitmap *tmpBM;
BitmapInfo bif2;
bif2.SetName(_T("xxxx67878"));
bif2.SetType(BMM_TRUE_32);
bif2.SetFlags(MAP_HAS_ALPHA);
bif2.SetWidth(nw);
bif2.SetHeight(nh);
tmpBM = TheManager->Create(&bif2);
tmpBM->CopyImage(fBM, COPY_IMAGE_RESIZE_LO_QUALITY, 0);
BMM_Color_64* p1 = row.Ptr();
for (int y = 0; y<nh; y++)
{
tmpBM->GetLinearPixels(0,y, nw, p1);
if (alphaAsRGB)
{
for (int ix =0; ix<nw; ix++)
p1[ix].r = p1[ix].g = p1[ix].b = p1[ix].a;
}
if (discardAlpha)
{
for (int ix = 0; ix < nw; ix++)
p1[ix].a = 0xffff;
}
newBM->PutPixels(x0, y+y0, nw, p1);
}
tmpBM->DeleteThis();
bmi = thmaker.BitmapToDIB(newBM, fUVGen->SymFlags(), xflags, forceW, forceH);
newBM->DeleteThis();
}
else
{
int x0,y0,nw,nh;
x0 = int(float(w-1)*clipu);
y0 = int(float(h-1)*clipv);
nw = int(float(w)*clipw);
nh = int(float(h)*cliph);
if (nw<1) nw = 1;
if (nh<1) nh = 1;
bi.SetWidth(nw);
bi.SetHeight(nh);
PixelBuf row(nw);
newBM = TheManager->Create(&bi);
BMM_Color_64* p1 = row.Ptr();
for (int y = 0; y<nh; y++)
{
fBM->GetLinearPixels(x0,y+y0, nw, p1);
if (alphaAsRGB)
{
for (int ix = 0; ix < nw; ix++)
p1[ix].r = p1[ix].g = p1[ix].b = p1[ix].a;
}
if (discardAlpha)
{
for (int ix = 0; ix < nw; ix++)
p1[ix].a = 0xffff;
}
//.........这里部分代码省略.........