[Scummvm-cvs-logs] SF.net SVN: scummvm:[50497] scummvm/trunk/engines/sci/graphics/animate.cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Tue Jun 29 16:54:31 CEST 2010


Revision: 50497
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50497&view=rev
Author:   fingolfin
Date:     2010-06-29 14:54:31 +0000 (Tue, 29 Jun 2010)

Log Message:
-----------
SCI: Simplify List::iterator usage in GfxAnimate

Modified Paths:
--------------
    scummvm/trunk/engines/sci/graphics/animate.cpp

Modified: scummvm/trunk/engines/sci/graphics/animate.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/animate.cpp	2010-06-29 14:54:15 UTC (rev 50496)
+++ scummvm/trunk/engines/sci/graphics/animate.cpp	2010-06-29 14:54:31 UTC (rev 50497)
@@ -178,15 +178,12 @@
 
 void GfxAnimate::fill(byte &old_picNotValid) {
 	reg_t curObject;
-	AnimateEntry *listEntry;
 	uint16 signal;
 	GfxView *view = NULL;
-	AnimateList::iterator listIterator;
-	AnimateList::iterator listEnd = _list.end();
+	AnimateList::iterator listEntry;
+	const AnimateList::iterator end = _list.end();
 
-	listIterator = _list.begin();
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.begin(); listEntry != end; ++listEntry) {
 		curObject = listEntry->object;
 
 		// Get the corresponding view
@@ -263,25 +260,19 @@
 			signal &= ~kSignalForceUpdate;
 		}
 		listEntry->signal = signal;
-
-		listIterator++;
 	}
 }
 
 void GfxAnimate::update() {
 	reg_t curObject;
-	AnimateEntry *listEntry;
 	uint16 signal;
 	reg_t bitsHandle;
 	Common::Rect rect;
-	AnimateList::iterator listIterator;
-	AnimateList::iterator listBegin = _list.begin();
-	AnimateList::iterator listEnd = _list.end();
+	AnimateList::iterator listEntry;
+	const AnimateList::iterator end = _list.end();
 
 	// Remove all no-update cels, if requested
-	listIterator = _list.reverse_begin();
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.reverse_begin(); listEntry != end; --listEntry) {
 		curObject = listEntry->object;
 		signal = listEntry->signal;
 
@@ -304,13 +295,10 @@
 			signal |= kSignalNoUpdate;
 		}
 		listEntry->signal = signal;
-		listIterator--;
 	}
 
 	// Draw always-update cels
-	listIterator = listBegin;
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.begin(); listEntry != end; ++listEntry) {
 		curObject = listEntry->object;
 		signal = listEntry->signal;
 
@@ -327,13 +315,10 @@
 			}
 			listEntry->signal = signal;
 		}
-		listIterator++;
 	}
 
 	// Saving background for all NoUpdate-cels
-	listIterator = listBegin;
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.begin(); listEntry != end; ++listEntry) {
 		curObject = listEntry->object;
 		signal = listEntry->signal;
 
@@ -350,13 +335,10 @@
 			}
 			listEntry->signal = signal;
 		}
-		listIterator++;
 	}
 
 	// Draw NoUpdate cels
-	listIterator = listBegin;
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.begin(); listEntry != end; ++listEntry) {
 		curObject = listEntry->object;
 		signal = listEntry->signal;
 
@@ -371,22 +353,18 @@
 				_paint16->fillRect(rect, GFX_SCREEN_MASK_CONTROL, 0, 0, 15);
 			}
 		}
-		listIterator++;
 	}
 }
 
 void GfxAnimate::drawCels() {
 	reg_t curObject;
-	AnimateEntry *listEntry;
 	uint16 signal;
 	reg_t bitsHandle;
-	AnimateList::iterator listIterator;
-	AnimateList::iterator listEnd = _list.end();
+	AnimateList::iterator listEntry;
+	const AnimateList::iterator end = _list.end();
 	_lastCastData.clear();
 
-	listIterator = _list.begin();
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.begin(); listEntry != end; ++listEntry) {
 		curObject = listEntry->object;
 		signal = listEntry->signal;
 
@@ -407,22 +385,18 @@
 			// Remember that entry in lastCast
 			_lastCastData.push_back(*listEntry);
 		}
-		listIterator++;
 	}
 }
 
 void GfxAnimate::updateScreen(byte oldPicNotValid) {
 	reg_t curObject;
-	AnimateEntry *listEntry;
 	uint16 signal;
-	AnimateList::iterator listIterator;
-	AnimateList::iterator listEnd = _list.end();
+	AnimateList::iterator listEntry;
+	const AnimateList::iterator end = _list.end();
 	Common::Rect lsRect;
 	Common::Rect workerRect;
 
-	listIterator = _list.begin();
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.begin(); listEntry != end; ++listEntry) {
 		curObject = listEntry->object;
 		signal = listEntry->signal;
 
@@ -455,8 +429,6 @@
 				listEntry->signal |= kSignalRemoveView;
 			}
 		}
-
-		listIterator++;
 	}
 	// use this for debug purposes
 	// _screen->copyToScreen();
@@ -464,30 +436,26 @@
 
 void GfxAnimate::restoreAndDelete(int argc, reg_t *argv) {
 	reg_t curObject;
-	AnimateEntry *listEntry;
 	uint16 signal;
-	AnimateList::iterator listIterator;
-	AnimateList::iterator listEnd = _list.end();
+	AnimateList::iterator listEntry;
+	const AnimateList::iterator end = _list.end();
 
 
-	// This has to be done in a separate loop. At least in sq1 some .dispose modifies FIXEDLOOP flag in signal for
-	//  another object. In that case we would overwrite the new signal with our version of the old signal
-	listIterator = _list.begin();
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	// This has to be done in a separate loop. At least in sq1 some .dispose
+	// modifies FIXEDLOOP flag in signal for another object. In that case we
+	// would overwrite the new signal with our version of the old signal.
+	for (listEntry = _list.begin(); listEntry != end; ++listEntry) {
 		curObject = listEntry->object;
 		signal = listEntry->signal;
 
 		// Finally update signal
 		writeSelectorValue(_s->_segMan, curObject, SELECTOR(signal), signal);
-		listIterator++;
 	}
 
-	listIterator = _list.reverse_begin();
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.reverse_begin(); listEntry != end; --listEntry) {
 		curObject = listEntry->object;
-		// We read out signal here again, this is not by accident but to ensure that we got an up-to-date signal
+		// We read out signal here again, this is not by accident but to ensure
+		// that we got an up-to-date signal
 		signal = readSelectorValue(_s->_segMan, curObject, SELECTOR(signal));
 
 		if ((signal & (kSignalNoUpdate | kSignalRemoveView)) == 0) {
@@ -499,7 +467,6 @@
 			// Call .delete_ method of that object
 			invokeSelector(_s, curObject, SELECTOR(delete_), argc, argv, 0);
 		}
-		listIterator--;
 	}
 }
 
@@ -524,14 +491,11 @@
 
 void GfxAnimate::addToPicDrawCels() {
 	reg_t curObject;
-	AnimateEntry *listEntry;
 	GfxView *view = NULL;
-	AnimateList::iterator listIterator;
-	AnimateList::iterator listEnd = _list.end();
+	AnimateList::iterator listEntry;
+	const AnimateList::iterator end = _list.end();
 
-	listIterator = _list.begin();
-	while (listIterator != listEnd) {
-		listEntry = &*listIterator;
+	for (listEntry = _list.begin(); listEntry != end; ++listEntry) {
 		curObject = listEntry->object;
 
 		if (listEntry->priority == -1)
@@ -549,8 +513,6 @@
 			listEntry->celRect.top = CLIP<int16>(_ports->kernelPriorityToCoordinate(listEntry->priority) - 1, listEntry->celRect.top, listEntry->celRect.bottom - 1);
 			_paint16->fillRect(listEntry->celRect, GFX_SCREEN_MASK_CONTROL, 0, 0, 15);
 		}
-
-		listIterator++;
 	}
 }
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list