[Scummvm-cvs-logs] SF.net SVN: scummvm: [28154] scummex/branches/gsoc2007-gameresbrowser
zbychs at users.sourceforge.net
zbychs at users.sourceforge.net
Sat Jul 21 01:32:40 CEST 2007
Revision: 28154
http://scummvm.svn.sourceforge.net/scummvm/?rev=28154&view=rev
Author: zbychs
Date: 2007-07-20 16:32:39 -0700 (Fri, 20 Jul 2007)
Log Message:
-----------
Improvements in presenting OBCD, CDHD, OBIM and IMHD blocks.
Modified Paths:
--------------
scummex/branches/gsoc2007-gameresbrowser/src/ReadMe.txt
scummex/branches/gsoc2007-gameresbrowser/src/browserapp/DefaultPlugin.cpp
scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp
scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.h
scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImageBox.cpp
scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImageBox.h
scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/CustomScummBlocks.h
scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/CustomScummBlocks.inl
scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummBlockFactory.cpp
scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummCommonPresenters.cpp
scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummFileTypes.cpp
scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummFileTypes.h
scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummSpecificPresenters.cpp
scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummSpecificPresenters.h
scummex/branches/gsoc2007-gameresbrowser/vc8/basic_plugin/basic_plugin.vcproj
scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout
Modified: scummex/branches/gsoc2007-gameresbrowser/src/ReadMe.txt
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/ReadMe.txt 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/ReadMe.txt 2007-07-20 23:32:39 UTC (rev 28154)
@@ -22,5 +22,11 @@
pinslot_plugins.cpp - shows plugin/object chain usage
myplugin.h - shows plugins in a verbose way
pinslot_verbose.cpp - shows pins and slots in a verbose way
+
+Notes:
+ http://wxcode.sourceforge.net/complist.php
+ wxAudio, wxMemoryMappedFile,
+ RtAudio, PortAudio
+
/////////////////////////////////////////////////////////////////////////////
Modified: scummex/branches/gsoc2007-gameresbrowser/src/browserapp/DefaultPlugin.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/browserapp/DefaultPlugin.cpp 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/browserapp/DefaultPlugin.cpp 2007-07-20 23:32:39 UTC (rev 28154)
@@ -90,6 +90,8 @@
PLUGGED_OBJECT(ScummLOFFBlockPresenter)
PLUGGED_OBJECT(ScummOFFSBlockPresenter)
PLUGGED_OBJECT(ScummRMHDBlockPresenter)
+ PLUGGED_OBJECT(ScummIMHDBlockPresenter)
+ PLUGGED_OBJECT(ScummCDHDBlockPresenter)
PLUGGED_OBJECT(ScummTRNSBlockPresenter)
PLUGGED_OBJECT(ScummNLSCBlockPresenter)
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.cpp 2007-07-20 23:32:39 UTC (rev 28154)
@@ -112,8 +112,17 @@
//m_font = wxSystemSettings::GetFont(wxSYS_OEM_FIXED_FONT);
m_font.Create(m_fontHeight, wxFONTFAMILY_MODERN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
- m_myForegroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
- m_myBackgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
+ //m_myForegroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
+ //m_myBackgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
+ //m_mySelectionColour = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
+ //m_mySelectionTextColour = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
+ m_myForegroundColour = *wxBLACK;
+ m_myBackgroundColour = *wxWHITE;
+ m_myBackgroundColourOdd.Set(237, 243, 254);
+ m_mySelectionColour.Set(255, 210, 129);
+ m_mySelectionTextColour = m_myForegroundColour;
+ m_myOffsetColour = wxTheColourDatabase->Find(wxT("GRAY"));
+ m_myCurentColour = wxTheColourDatabase->Find(wxT("YELLOW"));
//FIXME: dunno if this is required
wxCaret* caret = new wxCaret(this, 10, 10);
@@ -159,6 +168,25 @@
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
+// Calculations
+
+// address does not include m_dwStartAddr, doesn't have to be aligned to (m_digitsInData/2)
+int CHexEditCtrl::getRowFromAddress(wxUint32 address) {
+ return address / (m_columns * (m_digitsInData/2));
+}
+
+// address does not include m_dwStartAddr, doesn't have to be aligned to (m_digitsInData/2)
+int CHexEditCtrl::getColFromAddress(wxUint32 address) {
+ return (address / (m_digitsInData/2)) % m_columns;
+}
+
+// return address aligned to (m_digitsInData/2)
+wxUint32 CHexEditCtrl::getAddress(int row, int col) {
+ return (row * m_columns + col) * (m_digitsInData/2);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
// Painting
void CHexEditCtrl::TextOutWithCheck(wxDC& dc, const wxRect& rcInvalid, int x, int y, const wxString& strText) {
@@ -218,25 +246,36 @@
else
strText.Printf(wxT("%*c "), m_digitsInAddress, wxT(' '));
- dc.SetTextForeground(wxTheColourDatabase->Find(wxT("GRAY")));
+ dc.SetTextForeground(m_myOffsetColour);
dc.SetTextBackground(m_myBackgroundColour);
TextOutWithCheck(dc, rcInvalid, - m_nHorzScroll * m_cellSize.GetWidth() + m_cellSize.GetWidth()/2,
i * m_cellSize.GetHeight(), strText);
}
+ int dwRowPos = i * m_columns + m_viewPos;
+ bool full_line = wxUint32((dwRowPos + m_columns) * (m_digitsInData / 2) - 1) <
+ m_data.size();
+ bool partial_line = wxUint32(dwRowPos * (m_digitsInData / 2)) <
+ m_data.size();
+
+ wxColour curBackground;
for (int j = 0; j < m_columns; j++) {
// draw hex data
- int dwPos = j + i * m_columns + m_viewPos;
+ int dwPos = j + dwRowPos;
+ bool pos_ok = wxUint32(dwPos * (m_digitsInData / 2)) < m_data.size();
+ curBackground = (getRowFromAddress(dwPos) & 1) ? m_myBackgroundColourOdd
+ : m_myBackgroundColour;
+
//draw a space after hex number
if ( dwPos >= m_selStart && dwPos < m_selEnd && j != (m_columns-1)) {
// selected text colors
- dc.SetTextBackground(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT));
- dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT));
+ dc.SetTextBackground(m_mySelectionColour);
+ dc.SetTextForeground(m_mySelectionTextColour);
} else {
// normal text colors
- dc.SetTextBackground(m_myBackgroundColour);
+ dc.SetTextBackground(curBackground);
dc.SetTextForeground(m_myForegroundColour);
}
TextOutWithCheck(dc, rcInvalid,
@@ -245,15 +284,15 @@
if (dwPos == m_editPos) {
// caret text colors
- dc.SetTextBackground(wxTheColourDatabase->Find(wxT("YELLOW")));
+ dc.SetTextBackground(m_myCurentColour);
dc.SetTextForeground(m_myForegroundColour);
} else if (dwPos >= m_selStart && dwPos <= m_selEnd) {
// selected text colors
- dc.SetTextBackground(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT));
- dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT));
+ dc.SetTextBackground(m_mySelectionColour);
+ dc.SetTextForeground(m_mySelectionTextColour);
}
- if (wxUint32(dwPos) < m_data.size() / (m_digitsInData / 2)) {
+ if (pos_ok) {
std::vector<wxByte>::pointer ptr;
// we are in the data
switch (m_digitsInData)
@@ -301,7 +340,7 @@
} else {
// if the last line has less than m_columns numbers, fill it with spaces
dc.SetTextForeground(m_myForegroundColour);
- dc.SetTextBackground(m_myBackgroundColour);
+ dc.SetTextBackground(partial_line ? curBackground : m_myBackgroundColour);
strText.Printf(wxT("%*c "), m_digitsInData, wxT(' '));
TextOutWithCheck(dc, rcInvalid,
(m_addrMargin + j * (m_digitsInData + 1) - m_nHorzScroll) * m_cellSize.GetWidth() + m_cellSize.GetWidth() / 2,
@@ -318,7 +357,7 @@
}
}
- if (m_digitsInData < 8 && j > 0 && j * (m_digitsInData/2) % 4 == 0) {
+ if (partial_line && m_digitsInData < 8 && j > 0 && j * (m_digitsInData/2) % 4 == 0) {
int x = (m_addrMargin + j * (m_digitsInData + 1) - m_nHorzScroll) * m_cellSize.GetWidth();
int y = i * m_cellSize.GetHeight();
dc.DrawLine(x, y, x, y + m_cellSize.GetHeight());
@@ -326,7 +365,7 @@
}
dc.SetTextForeground(m_myForegroundColour);
- dc.SetTextBackground(m_myBackgroundColour);
+ dc.SetTextBackground(partial_line ? curBackground : m_myBackgroundColour);
//if ( m_bRealShowAscii )
{
@@ -337,6 +376,8 @@
i * m_cellSize.GetHeight(), strText);
}
+ dc.SetTextBackground(m_myBackgroundColour);
+
// draw extra spaces at the end of line
if (m_charCountView.GetWidth() < m_charCountWindow.GetWidth())
strText.Printf(wxT("%*c "), m_charCountWindow.GetWidth() - m_charCountView.GetWidth() + 1, wxT(' '));
@@ -349,9 +390,9 @@
}
// fill the rest of the window with spaces
- strText.Printf(wxT("%*c "), m_charCountWindow.GetWidth(), wxT(' '));
+ /*strText.Printf(wxT("%*c "), m_charCountWindow.GetWidth(), wxT(' '));
TextOutWithCheck(dc, rcInvalid,
- m_cellSize.GetWidth() / 2, m_charCountWindow.GetHeight() * m_cellSize.GetHeight(), strText);
+ m_cellSize.GetWidth() / 2, m_charCountWindow.GetHeight() * m_cellSize.GetHeight(), strText);*/
}
/////////////////////////////////////////////////////////////////////////////
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.h 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/CHexEditCtrl.h 2007-07-20 23:32:39 UTC (rev 28154)
@@ -190,6 +190,11 @@
bool m_hScrollShown;
wxColour m_myForegroundColour; //CAUTION: wxWindowBase has m_foregroundColour member
wxColour m_myBackgroundColour; //CAUTION: wxWindowBase has m_backgroundColour member
+ wxColour m_myBackgroundColourOdd; //use it for odd columns
+ wxColour m_mySelectionColour;
+ wxColour m_mySelectionTextColour;
+ wxColour m_myOffsetColour;
+ wxColour m_myCurentColour;
wxFont m_font;
bool m_readOnly;
@@ -233,6 +238,10 @@
void ShowCaret();
void HideCaret();
+ int getRowFromAddress(wxUint32 address);
+ int getColFromAddress(wxUint32 address);
+ wxUint32 getAddress(int row, int col);
+
/*! This function calls pdc->TextOut ( x, y, strText ) function if text overlaps with rcInvalid.*/
void TextOutWithCheck(wxDC& dc, const wxRect& rcInvalid, int x, int y, const wxString& strText);
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImageBox.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImageBox.cpp 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImageBox.cpp 2007-07-20 23:32:39 UTC (rev 28154)
@@ -19,6 +19,7 @@
////////////////////////////////////////////////////////////
BEGIN_EVENT_TABLE(wxImageBox, wxPaintBox)
+ EVT_PAINT(wxImageBox::OnPaint)
EVT_SIZE(wxImageBox::OnResize)
EVT_RIGHT_DOWN(wxImageBox::OnMouseRightButton)
EVT_RIGHT_UP(wxImageBox::OnMouseRightButton)
@@ -201,12 +202,14 @@
// paintRect.x, paintRect.y, paintRect.width, paintRect.height,
// bufferRect.x, bufferRect.y, bufferRect.width, bufferRect.height);
}
+
wxPaintBox::OnPaint(event);
}
void wxImageBox::OnResize(wxSizeEvent &event)
{
UpdatePaintBox();
+ event.Skip();
}
void wxImageBox::OnMouseRightButton(wxMouseEvent &event)
@@ -231,7 +234,8 @@
m_buffer = new wxBitmap;
m_bufferX = m_bufferY = 0;
m_imageWidth = m_imageHeight = 0;
- SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BACKGROUND));
+
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
}
wxPaintBox::~wxPaintBox() {
@@ -250,7 +254,7 @@
//dc.BeginDrawing();
dc.DrawBitmap(*m_buffer, m_bufferX, m_bufferY);
//background
- dc.SetPen(wxPen(*wxBLACK,0,wxTRANSPARENT));
+ dc.SetPen(*wxTRANSPARENT_PEN);
dc.SetBrush(wxBrush(GetBackgroundColour(), wxSOLID));
int w = wxMax(GetClientSize().GetWidth(), m_imageWidth);
int h = wxMax(GetClientSize().GetHeight(), m_imageHeight);
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImageBox.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImageBox.h 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/basic/ImageBox.h 2007-07-20 23:32:39 UTC (rev 28154)
@@ -28,7 +28,7 @@
wxBitmap *m_buffer;
int m_bufferX, m_bufferY;
int m_imageWidth, m_imageHeight;
- virtual void OnPaint(wxPaintEvent &event);
+ void OnPaint(wxPaintEvent &event);
void OnEraseBackground(wxEraseEvent &event);
DECLARE_EVENT_TABLE()
};
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/CustomScummBlocks.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/CustomScummBlocks.h 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/CustomScummBlocks.h 2007-07-20 23:32:39 UTC (rev 28154)
@@ -12,9 +12,22 @@
namespace Scumm {
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+//
// This file holds interfaces of ScummBlocks that can parse particular
-// scumm chunks. See CustomScummBlocks.inl
+// scumm chunks. See CustomScummBlocks.inl for a list and comments.
+//
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// Accessor that parses() the chunk before returning the field's value.
+#define PARSING_ACCESSOR(type, accessor, field) \
+ virtual type accessor() { \
+ parse(); \
+ return field; \
+ }
+
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// A ScummBlock that consists of one null-terminated string.
@@ -25,7 +38,7 @@
wxString _string;
public:
ScummStringBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream);
- virtual const wxString& getString();
+ PARSING_ACCESSOR(const wxString&, getString, _string)
virtual bool readData();
};
@@ -44,7 +57,7 @@
std::vector<LOFFEntry> _offsets;
public:
ScummLOFFBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream);
- virtual const std::vector<LOFFEntry>& getOffsets();
+ PARSING_ACCESSOR(const std::vector<LOFFEntry>&, getOffsets, _offsets)
virtual int getRoomNumberByOffset(uint32 offset); //-1 if not found
virtual bool readData();
};
@@ -66,7 +79,115 @@
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
+// A ScummBlock that is able to parse RMHD chunk.
+// It exposes the determined width and height of the room's image.
+class ScummRMHDBlock : public ScummWidthHeightBlock {
+ uint32 _objs;
+public:
+ ScummRMHDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream);
+ PARSING_ACCESSOR(uint32, getNumObjs, _objs)
+ virtual bool readData();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// A ScummBlock that is able to parse IMHD chunk.
+// It exposes the determined width and height of the image.
+
+class ScummIMHDBlock : public ScummWidthHeightBlock {
+public:
+ struct HotSpot {
+ int16 _x;
+ int16 _y;
+ };
+protected:
+ int16 _objId;
+ int16 _numIMs;
+ int16 _numZPsPerIM;
+ int16 _unk;
+ int16 _x;
+ int16 _y;
+ //int16 _width; inherited
+ //int16 _height; inherited
+ int16 _numHotspots;
+ std::vector<HotSpot> _hotspots;
+
+ //uint32 _numFiles;
+public:
+ ScummIMHDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream);
+
+ PARSING_ACCESSOR(int16, getObjId, _objId)
+ PARSING_ACCESSOR(int16, getNumIMs, _numIMs)
+ PARSING_ACCESSOR(int16, getZPsPerIM, _numZPsPerIM)
+ PARSING_ACCESSOR(int16, getUnk, _unk)
+ PARSING_ACCESSOR(int16, getX, _x)
+ PARSING_ACCESSOR(int16, getY, _y)
+ PARSING_ACCESSOR(int16, getNumHotSpots, _numHotspots)
+ //_width, _height - inherited
+ PARSING_ACCESSOR(const std::vector<HotSpot>&, getHotSpots, _hotspots)
+
+ virtual bool readData();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// A ScummBlock that is able to parse CDHD chunk.
+// It exposes the determined width and height of the object.
+
+class ScummCDHDBlock : public ScummWidthHeightBlock {
+protected:
+ int16 _objId;
+ int16 _x;
+ int16 _y;
+ //int16 _width; inherited
+ //int16 _height; inherited
+ int8 _flagsField;
+ int8 _parentField;
+ int16 _unk0;
+ int16 _unk1;
+ int8 _actorDir;
+public:
+ ScummCDHDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream);
+
+ PARSING_ACCESSOR(int16, getObjId, _objId)
+ PARSING_ACCESSOR(int16, getX, _x)
+ PARSING_ACCESSOR(int16, getY, _y)
+ //_width, _height - inherited
+ PARSING_ACCESSOR(int8, getFlagsField, _flagsField)
+ PARSING_ACCESSOR(int8, getParentField, _parentField)
+ PARSING_ACCESSOR(int16, getUnk0, _unk0)
+ PARSING_ACCESSOR(int16, getUnk1, _unk1)
+ PARSING_ACCESSOR(int8, getActorDir, _actorDir)
+
+ virtual bool readData();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// A ScummBlock that is able to parse VERB chunk.
+// It exposes the determined width and height of the object.
+
+class ScummVERBBlock : public ScummBlock {
+public:
+ struct VerbOffset {
+ int8 _verb;
+ int16 _offset;
+ int _size;
+ };
+protected:
+ std::vector<VerbOffset> _offsets;
+public:
+ ScummVERBBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream);
+
+ PARSING_ACCESSOR(const std::vector<VerbOffset>&, getVerbOffsets, _offsets)
+
+ virtual bool readData();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
} // namespace Scumm
} // namespace Browser
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/CustomScummBlocks.inl
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/CustomScummBlocks.inl 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/CustomScummBlocks.inl 2007-07-20 23:32:39 UTC (rev 28154)
@@ -14,6 +14,8 @@
// This file defines blocks specific for the following scumm chunks:
// RMHD
// IMHD
+// CDHD
+// VERB
// PAL's (various, plus dummy ScummEGABlock)
// OBNA
// LFLF
@@ -74,92 +76,162 @@
// A ScummBlock that is able to parse RMHD chunk.
// It exposes the determined width and height of the room's image.
-class ScummRMHDBlock : public ScummWidthHeightBlock {
- uint32 _objs;
-public:
- ScummRMHDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream)
- : ScummWidthHeightBlock(tag, size, stream) {
- _flags = READ_DATA;
- }
+ScummRMHDBlock::ScummRMHDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream)
+ : ScummWidthHeightBlock(tag, size, stream) {
+ _flags = READ_DATA;
+}
- virtual uint32 getNumObjs() {
- parse();
- return _objs;
- }
+bool ScummRMHDBlock::readData() {
+ Common::SeekableReadStream& _input = *_mineStream;
+ _width = _input.readUint16LE();
+ _height = _input.readUint16LE();
+ _objs = _input.readUint16LE();
+ return true;
+}
- virtual bool readData() {
- Common::SeekableReadStream& _input = *_mineStream;
- _width = _input.readUint16LE();
- _height = _input.readUint16LE();
- _objs = _input.readUint16LE();
- return true;
- }
-};
-
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// A ScummBlock that is able to parse IMHD chunk.
// It exposes the determined width and height of the image.
-class ScummIMHDBlock : public ScummWidthHeightBlock {
- uint32 _numFiles;
-public:
- ScummIMHDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream)
- : ScummWidthHeightBlock(tag, size, stream) {
- _flags = READ_DATA;
- }
+ScummIMHDBlock::ScummIMHDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream)
+ : ScummWidthHeightBlock(tag, size, stream) {
+ _flags = READ_DATA;
+}
- virtual uint32 getNumFiles() {
- parse();
- return _numFiles;
+bool ScummIMHDBlock::readData() {
+ //this handles only the *** branch below
+ _objId = _mineStream->readSint16LE();
+ _numIMs = _mineStream->readSint16LE();
+ _numZPsPerIM = _mineStream->readSint16LE();
+ _unk = _mineStream->readSint16LE();
+ _x = _mineStream->readSint16LE();
+ _y = _mineStream->readSint16LE();
+ _width = _mineStream->readSint16LE();
+ _height = _mineStream->readSint16LE();
+ _numHotspots = _mineStream->readSint16LE();
+
+ HotSpot hotspot;
+ for (int i = 0; i < _numHotspots; ++i) {
+ hotspot._x = _mineStream->readSint16LE();
+ hotspot._y = _mineStream->readSint16LE();
+ _hotspots.push_back(hotspot);
}
- virtual bool readData() {
- Common::SeekableReadStream& _input = *_mineStream;
+ //FIXME: try and parse it properly
+ /* old code - not sure what some of it does:
+ Common::SeekableReadStream& _input = *_mineStream;
- uint32 mark = _input.readUint32LE();
+ uint32 mark = _input.readUint32LE();
- if (mark == 730) {
- _input.readUint16LE();
- _numFiles = _input.readUint16LE(); // Number of images
+ if (mark == 730) {
+ _input.readUint16LE();
+ _numFiles = _input.readUint16LE(); // Number of images
+ _input.readUint16LE(); // X Position
+ _input.readUint16LE(); // Y Position
+ _width = _input.readUint16LE();
+ _height = _input.readUint16LE();
+ } else {
+ bool read = false;
+
+ ScummBlock* im00 = this->getNext();
+ ScummBlock* bomp = im00 ? im00->getNext() : NULL;
+ if (bomp && bomp->getTag()->equals("BOMP")) { //FIXME: it shouldn't be a BOMP test, almost 100%
+ Common::SeekableReadStream& _bompinput = *bomp->_mineStream;
+ _bompinput.seek(0, SEEK_SET);
+ _bompinput.seek(8 + 2, SEEK_SET);
+ uint32 mark = _bompinput.readUint32LE();
+ if (mark == 801) {
+ _numFiles = _bompinput.readUint32LE(); // Number of images
+ _bompinput.readUint32LE(); // X Position
+ _bompinput.readUint32LE(); // Y Position
+ _width = _bompinput.readUint32LE();
+ _height = _bompinput.readUint32LE();
+ read = true;
+ }
+ }
+
+ if (!read) { //***
+ _input.seek(10, SEEK_SET);
+ _numFiles = _input.readUint16LE();
+ _input.readUint32BE(); // Number of Z-Buffers per Image + unk
_input.readUint16LE(); // X Position
_input.readUint16LE(); // Y Position
_width = _input.readUint16LE();
_height = _input.readUint16LE();
- } else {
- bool read = false;
+ }
+ }
+ */
- ScummBlock* im00 = this->getNext();
- ScummBlock* bomp = im00 ? im00->getNext() : NULL;
- if (bomp && bomp->getTag()->equals("BOMP")) { //FIXME: it shouldn't be a BOMP test, almost 100%
- Common::SeekableReadStream& _bompinput = *bomp->_mineStream;
- _bompinput.seek(0, SEEK_SET);
- _bompinput.seek(8 + 2, SEEK_SET);
- uint32 mark = _bompinput.readUint32LE();
- if (mark == 801) {
- _numFiles = _bompinput.readUint32LE(); // Number of images
- _bompinput.readUint32LE(); // X Position
- _bompinput.readUint32LE(); // Y Position
- _width = _bompinput.readUint32LE();
- _height = _bompinput.readUint32LE();
- read = true;
- }
- }
-
- if (!read) {
- _input.seek(10, SEEK_SET);
- _numFiles = _input.readUint16LE();
- _input.readUint32BE(); // Number of Z-Buffers per Image
- _input.readUint16LE(); // X Position
- _input.readUint16LE(); // Y Position
- _width = _input.readUint16LE();
- _height = _input.readUint16LE();
- }
+ return true;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// A ScummBlock that is able to parse CDHD chunk.
+// It exposes the determined width and height of the object.
+
+ScummCDHDBlock::ScummCDHDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream)
+ : ScummWidthHeightBlock(tag, size, stream) {
+ _flags = READ_DATA;
+}
+
+bool ScummCDHDBlock::readData() {
+ _objId = _mineStream->readSint16LE();
+ _x = _mineStream->readSint16LE();
+ _y = _mineStream->readSint16LE();
+ _width = _mineStream->readSint16LE();
+ _height = _mineStream->readSint16LE();
+ _flagsField = _mineStream->readSByte();
+ _parentField = _mineStream->readSByte();
+ _unk0 = _mineStream->readSint16LE();
+ _unk1 = _mineStream->readSint16LE();
+ _actorDir = _mineStream->readSByte();
+
+ return true;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// A ScummBlock that is able to parse VERB chunk.
+// It exposes the determined width and height of the object.
+
+ScummVERBBlock::ScummVERBBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream)
+ : ScummBlock(tag, size, stream) {
+ _flags = READ_DATA;
+}
+
+bool ScummVERBBlock::readData() {
+ /*uint32 pos = _mineStream->pos();
+ bool res = ScummBlock::readData(); //read the chunk into _data
+ if (!res)
+ return false;
+
+ _mineStream->seek(pos, SEEK_SET);*/
+
+ VerbOffset offset;
+ int lastOffset;
+ while(true) {
+ if (_mineStream->ioFailed())
+ return false;
+
+ offset._verb = _mineStream->readSByte();
+ if (offset._verb == 0) {
+ if (!_offsets.empty())
+ _offsets.back()._size = _mineStream->size() - lastOffset;
+ break;
}
- return true;
+
+ offset._offset = _mineStream->readUint16LE();
+ if (!_offsets.empty())
+ _offsets.back()._size = offset._offset - lastOffset;
+ lastOffset = offset._offset;
+ _offsets.push_back(offset);
}
-};
+ return true;
+}
+
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// A generic ScummBlocks that is able to parse palette chunks.
@@ -247,11 +319,6 @@
_flags = READ_DATA | PARSE_BEFORE_NAME;
}
-const wxString& ScummStringBlock::getString() {
- parse();
- return _string;
-}
-
bool ScummStringBlock::readData() {
_string = _mineStream->readString();
_friendlyName << wxT(": ") << _string;
@@ -269,7 +336,7 @@
: ScummStringBlock(tag, size, stream) {
_flags |= EAGER_PARSE; //PARSE_BEFORE_NAME is not enough, cause we need to set name for OBCD, our parent
}
- virtual bool readData() {
+ /*virtual bool readData() {
bool res = ScummStringBlock::readData();
if (!res)
return false;
@@ -282,7 +349,7 @@
obcdBlock->_friendlyName << wxT(": ") << _string;
return true;
- }
+ }*/
};
/////////////////////////////////////////////////////////////////////////////
@@ -332,11 +399,6 @@
_flags = READ_DATA | EAGER_PARSE;
}
-const std::vector<ScummLOFFBlock::LOFFEntry>& ScummLOFFBlock::getOffsets() {
- parse();
- return _offsets;
-}
-
bool ScummLOFFBlock::readData() {
byte numLFLFs = _mineStream->readByte();
@@ -436,4 +498,69 @@
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
+// A ScummBlock that is able to parse OBCD chunk.
+// It takes it's friendly name from OBNA, and gives it to itself and corresponding OBIM.
+class ScummOBCDBlock : public ScummBlock {
+public:
+ ScummOBCDBlock(ScummTag* tag, uint32 size, Common::SeekableReadStream* stream)
+ : ScummBlock(tag, size, stream) {
+ _flags = PARSE_SUB_BLOCKS | EAGER_PARSE; //EAGER_PARSE to parse OBNA block and set _friendlyName
+ }
+
+ virtual bool parse() {
+ if (_parsed)
+ return true;
+ bool res = ScummBlock::parse();
+ if (!res)
+ return false;
+
+ ScummBlock* obnaBlock0 = this->findChild("OBNA");
+ if (!obnaBlock0)
+ return true;
+
+ ScummOBNABlock* obnaBlock = dynamic_cast<ScummOBNABlock*>(obnaBlock0);
+ ASSERT(obnaBlock);
+ _friendlyName << wxT(": ") << obnaBlock->getString();
+
+ ScummBlock* cdhdBlock0 = this->findChild("CDHD");
+ if (!cdhdBlock0)
+ return true;
+
+ ScummCDHDBlock* cdhdBlock = dynamic_cast<ScummCDHDBlock*>(cdhdBlock0);
+ ASSERT(cdhdBlock);
+
+ int objId = cdhdBlock->getObjId();
+
+ ScummBlock* block = this;
+ while (true) {
+ block = block->getPrevSibling();
+ if (!block)
+ break;
+ if (!block->getTag()->equals("OBIM"))
+ continue;
+
+ ScummBlock* imhdBlock0 = block->findChild("IMHD");
+ if (!imhdBlock0)
+ continue;
+
+ ScummIMHDBlock* imhdBlock = dynamic_cast<ScummIMHDBlock*>(imhdBlock0);
+ ASSERT(imhdBlock);
+
+ int imObjId = imhdBlock->getObjId();
+ if (imObjId != objId)
+ continue;
+
+ wxString suffix;
+ suffix << wxT(": ") << obnaBlock->getString();
+ block->setFriendlyName(block->getFriendlyName() + suffix);
+ break;
+ }
+
+ return true;
+ }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummBlockFactory.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummBlockFactory.cpp 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummBlockFactory.cpp 2007-07-20 23:32:39 UTC (rev 28154)
@@ -260,7 +260,7 @@
CUSTOM_BLOCK("SCRP", scummScriptBlockPresenterGUID())
CUSTOM_BLOCK("ENCD", scummScriptBlockPresenterGUID())
CUSTOM_BLOCK("EXCD", scummScriptBlockPresenterGUID())
- CUSTOM_BLOCK("VERB", scummScriptBlockPresenterGUID())
+ CUSTOM_BLOCK_EX(ScummVERBBlock, "VERB", scummScriptBlockPresenterGUID())
CUSTOM_BLOCK("LS", scummScriptBlockPresenterGUID())
CUSTOM_BLOCK("SC", scummScriptBlockPresenterGUID())
CUSTOM_BLOCK("EN", scummScriptBlockPresenterGUID())
@@ -313,8 +313,9 @@
SCUMM_BLOCK(RawScummBlock, "RIFF", TILL_END, -1, -1, INVALID_FLAGS) //TODO: parse it properly
BASIC_BLOCK("ROL ")
BLOCKY_STOPPER("ROOM")
- DATA_BLOCK(ScummIMHDBlock, "IMHD", CoreFileTypes::binaryParserGUID())
DATA_BLOCK(ScummRMHDBlock, "RMHD", scummRMHDBlockPresenterGUID())
+ DATA_BLOCK(ScummIMHDBlock, "IMHD", scummIMHDBlockPresenterGUID())
+ DATA_BLOCK(ScummCDHDBlock, "CDHD", scummCDHDBlockPresenterGUID())
BLOCKY_BLOCK("RMSC")
BASIC_BLOCK("SPK ")
BASIC_BLOCK("STOP")
@@ -322,9 +323,7 @@
CUSTOM_BLOCK("TRNS", scummTRNSBlockPresenterGUID())
CUSTOM_BLOCK_EX(ScummNLSCBlock, "NLSC", scummNLSCBlockPresenterGUID())
CUSTOM_BLOCK_EX(ScummOBNABlock, "OBNA", scummStringBlockPresenterGUID())
- SCUMM_BLOCK_EX(ScummBlock, "OBCD", INVALID_SIZE_MODE, -1, -1,
- EAGER_PARSE | PARSE_SUB_BLOCKS, //EAGER_PARSE to parse OBNA block and set _friendlyName
- blockyBlockPresenterGUID())
+ CUSTOM_BLOCK_EX(ScummOBCDBlock, "OBCD", blockyBlockPresenterGUID())
BLOCKY_BLOCK("WRAP") //FIXME: Is this ok? Shouldn't the OFFS subblock be used here?
//BLOCKY_BLOCK("SOUN") //This not ok.
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummCommonPresenters.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummCommonPresenters.cpp 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummCommonPresenters.cpp 2007-07-20 23:32:39 UTC (rev 28154)
@@ -114,18 +114,25 @@
ASSERT(rootBlock);
int scummVersion = rootBlock->getScummVersion();
- if (scummVersion != -1) {
- Common::SeekableReadStream* stream = block->getStream();
- stream->seek(0, SEEK_SET);
- DeScumm descumm(*stream, stream->size(), scummVersion);
+ if (scummVersion == -1) {
+ _text = wxT("<Unknown Scumm Version>");
+ return;
+ }
- _text = descumm.getText();
- if (_text.IsEmpty())
- _text = wxT("<Empty script>");
- } else {
- if (_text.IsEmpty())
- _text = wxT("<Unknown Scumm Version>");
+ if (block->getTag()->equals("VERB")) {
+ ScummVERBBlock* verbBlock = dynamic_cast<ScummVERBBlock*>(block);
+ ASSERT(verbBlock);
+ _text << wxT("Sorry, VERBs don't work yet. God knows why...") << wxEndl();
+ _text << wxT("Number of verbs: ") << verbBlock->getVerbOffsets().size() << wxEndl();
+ return;
}
+
+ stream->seek(0, SEEK_SET);
+ DeScumm descumm(*stream, stream->size(), scummVersion);
+
+ _text = descumm.getText();
+ if (_text.IsEmpty())
+ _text = wxT("<Empty script>");
}
/////////////////////////////////////////////////////////////////////////////
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummFileTypes.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummFileTypes.cpp 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummFileTypes.cpp 2007-07-20 23:32:39 UTC (rev 28154)
@@ -31,6 +31,8 @@
SAFE_LOCAL_STATIC(scummLOFFBlockPresenterGUID, BGUID, (wxT("ScummObjects"), wxT("ScummLOFFBlockPresenter"), 1) )
SAFE_LOCAL_STATIC(scummOFFSBlockPresenterGUID, BGUID, (wxT("ScummObjects"), wxT("ScummOFFSBlockPresenter"), 1) )
SAFE_LOCAL_STATIC(scummRMHDBlockPresenterGUID, BGUID, (wxT("ScummObjects"), wxT("ScummRMHDBlockPresenter"), 1) )
+SAFE_LOCAL_STATIC(scummIMHDBlockPresenterGUID, BGUID, (wxT("ScummObjects"), wxT("ScummIMHDBlockPresenter"), 1) )
+SAFE_LOCAL_STATIC(scummCDHDBlockPresenterGUID, BGUID, (wxT("ScummObjects"), wxT("ScummCDHDBlockPresenter"), 1) )
SAFE_LOCAL_STATIC(scummTRNSBlockPresenterGUID, BGUID, (wxT("ScummObjects"), wxT("ScummTRNSBlockPresenter"), 1) )
SAFE_LOCAL_STATIC(scummNLSCBlockPresenterGUID, BGUID, (wxT("ScummObjects"), wxT("ScummNLSCBlockPresenter"), 1) )
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummFileTypes.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummFileTypes.h 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummFileTypes.h 2007-07-20 23:32:39 UTC (rev 28154)
@@ -33,6 +33,8 @@
SAFE_LOCAL_STATIC_DECL(scummLOFFBlockPresenterGUID, BGUID)
SAFE_LOCAL_STATIC_DECL(scummOFFSBlockPresenterGUID, BGUID)
SAFE_LOCAL_STATIC_DECL(scummRMHDBlockPresenterGUID, BGUID)
+SAFE_LOCAL_STATIC_DECL(scummIMHDBlockPresenterGUID, BGUID)
+SAFE_LOCAL_STATIC_DECL(scummCDHDBlockPresenterGUID, BGUID)
SAFE_LOCAL_STATIC_DECL(scummTRNSBlockPresenterGUID, BGUID)
SAFE_LOCAL_STATIC_DECL(scummNLSCBlockPresenterGUID, BGUID)
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummSpecificPresenters.cpp
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummSpecificPresenters.cpp 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummSpecificPresenters.cpp 2007-07-20 23:32:39 UTC (rev 28154)
@@ -42,20 +42,64 @@
void ScummRMHDBlockPresenter::doCreate(ScummBlock* block, Common::SeekableReadStream* stream) {
//infoout << wxT("ScummRMHDBlockPresenter::doCreate(): ") << std::endl;
- uint32 width = stream->readUint16LE();
- uint32 height = stream->readUint16LE();
- uint32 objs = stream->readUint16LE();
+ ScummRMHDBlock* rmhdBlock = dynamic_cast<ScummRMHDBlock*>(block);
+ ASSERT(rmhdBlock);
wxString txt;
- txt << wxT("Room Width: ") << width << wxEndl();
- txt << wxT("Room Height: ") << height << wxEndl();
- txt << wxT("Number Of Objects: ") << objs << wxEndl();
+ txt << wxT("Room Width: ") << rmhdBlock->getWidth() << wxEndl();
+ txt << wxT("Room Height: ") << rmhdBlock->getHeight() << wxEndl();
+ txt << wxT("Number Of Objects: ") << rmhdBlock->getNumObjs() << wxEndl();
_text = txt;
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
+void ScummIMHDBlockPresenter::doCreate(ScummBlock* block, Common::SeekableReadStream* stream) {
+ //infoout << wxT("ScummIMHDBlockPresenter::doCreate(): ") << std::endl;
+
+ ScummIMHDBlock* imhdBlock = dynamic_cast<ScummIMHDBlock*>(block);
+ ASSERT(imhdBlock);
+
+ wxString txt;
+ txt << wxT("Object id: ") << imhdBlock->getObjId() << wxEndl();
+ txt << wxT("Number of images: ") << imhdBlock->getNumIMs() << wxEndl();
+ txt << wxT("Number of Z-planes per image: ") << imhdBlock->getZPsPerIM() << wxEndl();
+ txt << wxT("Unknown: ") << toHex(imhdBlock->getUnk(), 4) << wxEndl();
+ txt << wxT("X: ") << imhdBlock->getX() << wxEndl();
+ txt << wxT("Y: ") << imhdBlock->getY() << wxEndl();
+ txt << wxT("Width: ") << imhdBlock->getWidth() << wxEndl();
+ txt << wxT("Height: ") << imhdBlock->getHeight() << wxEndl();
+ txt << wxT("Number Of HotSpots: ") << imhdBlock->getNumHotSpots() << wxEndl();
+ _text = txt;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+void ScummCDHDBlockPresenter::doCreate(ScummBlock* block, Common::SeekableReadStream* stream) {
+ //infoout << wxT("ScummCDHDBlockPresenter::doCreate(): ") << std::endl;
+
+ ScummCDHDBlock* cdhdBlock = dynamic_cast<ScummCDHDBlock*>(block);
+ ASSERT(cdhdBlock);
+
+ wxString txt;
+ txt << wxT("Object id: ") << cdhdBlock->getObjId() << wxEndl();
+ txt << wxT("X: ") << cdhdBlock->getX() << wxEndl();
+ txt << wxT("Y: ") << cdhdBlock->getY() << wxEndl();
+ txt << wxT("Width: ") << cdhdBlock->getWidth() << wxEndl();
+ txt << wxT("Height: ") << cdhdBlock->getHeight() << wxEndl();
+ txt << wxT("Flags: ") << toHex(cdhdBlock->getFlagsField(), 2) << wxEndl();
+ txt << wxT("Parent: ") << cdhdBlock->getParentField() << wxEndl();
+ txt << wxT("Unknown0: ") << toHex(cdhdBlock->getUnk0(), 4) << wxEndl();
+ txt << wxT("Unknown1: ") << toHex(cdhdBlock->getUnk1(), 4) << wxEndl();
+ txt << wxT("Actor Dir: ") << cdhdBlock->getActorDir() << wxEndl();
+ _text = txt;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
void ScummTRNSBlockPresenter::doCreate(ScummBlock* block, Common::SeekableReadStream* stream) {
//infoout << wxT("ScummTRNSBlockPresenter::doCreate(): ") << std::endl;
Modified: scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummSpecificPresenters.h
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummSpecificPresenters.h 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/src/plugins/scumm/ScummSpecificPresenters.h 2007-07-20 23:32:39 UTC (rev 28154)
@@ -18,6 +18,8 @@
// This file declares presenters specific for the following scumm chunks:
// OFFS
// RMHD
+// IMHD
+// CDHD
// TRNS
// NLSC
// LOFF
@@ -54,6 +56,30 @@
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
+class SCUMM_PLUGIN_API ScummIMHDBlockPresenter : public ScummBlockTextPresenter {
+ DECLARE_BOBJECT_CLASS(ScummIMHDBlockPresenter, ScummBlockTextPresenter)
+
+public:
+ ASSIGN_DESC(0,wxT("ScummObjects"), 1)
+
+ virtual void doCreate(ScummBlock* block, Common::SeekableReadStream* stream);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+class SCUMM_PLUGIN_API ScummCDHDBlockPresenter : public ScummBlockTextPresenter {
+ DECLARE_BOBJECT_CLASS(ScummCDHDBlockPresenter, ScummBlockTextPresenter)
+
+public:
+ ASSIGN_DESC(0,wxT("ScummObjects"), 1)
+
+ virtual void doCreate(ScummBlock* block, Common::SeekableReadStream* stream);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
class SCUMM_PLUGIN_API ScummTRNSBlockPresenter : public ScummBlockTextPresenter {
DECLARE_BOBJECT_CLASS(ScummTRNSBlockPresenter, ScummBlockTextPresenter)
Modified: scummex/branches/gsoc2007-gameresbrowser/vc8/basic_plugin/basic_plugin.vcproj
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/vc8/basic_plugin/basic_plugin.vcproj 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/vc8/basic_plugin/basic_plugin.vcproj 2007-07-20 23:32:39 UTC (rev 28154)
@@ -416,10 +416,6 @@
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
- <File
- RelativePath=".\ReadMe.txt"
- >
- </File>
</Files>
<Globals>
</Globals>
Modified: scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout
===================================================================
--- scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout 2007-07-20 21:51:08 UTC (rev 28153)
+++ scummex/branches/gsoc2007-gameresbrowser/wxdev/Browser.layout 2007-07-20 23:32:39 UTC (rev 28154)
@@ -25,7 +25,7 @@
TopLine=1
LeftChar=1
Open=1
-Top=0
+Top=1
[Editor_1]
CursorCol=1
CursorRow=1
@@ -49,7 +49,7 @@
TopLine=141
LeftChar=1
Open=1
-Top=1
+Top=0
[Editor_6]
CursorCol=1
CursorRow=57
@@ -60,7 +60,7 @@
[Editor_8]
CursorCol=1
CursorRow=114
-TopLine=106
+TopLine=114
LeftChar=1
Open=1
Top=0
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