Various fixes

This commit is contained in:
Daniel Collin 2012-12-27 20:42:22 +01:00
parent 28cd240b2e
commit c6f52ad6c3
11 changed files with 197 additions and 247 deletions

1
mktags.bash Executable file
View File

@ -0,0 +1 @@
ctags --extra=+f -R *

View File

@ -69,92 +69,6 @@
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="304266470">
<reference key="NSMenu" ref="110575045"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="609285721">
<reference key="NSMenu" ref="110575045"/>
<string key="NSTitle">Preferences…</string>
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="481834944">
<reference key="NSMenu" ref="110575045"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="1046388886">
<reference key="NSMenu" ref="110575045"/>
<string key="NSTitle">Services</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="752062318">
<string key="NSTitle">Services</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<string key="NSName">_NSServicesMenu</string>
</object>
</object>
<object class="NSMenuItem" id="646227648">
<reference key="NSMenu" ref="110575045"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="755159360">
<reference key="NSMenu" ref="110575045"/>
<string key="NSTitle">Hide Rocket</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="342932134">
<reference key="NSMenu" ref="110575045"/>
<string key="NSTitle">Hide Others</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="908899353">
<reference key="NSMenu" ref="110575045"/>
<string key="NSTitle">Show All</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="1056857174">
<reference key="NSMenu" ref="110575045"/>
<bool key="NSIsDisabled">YES</bool>
@ -376,7 +290,7 @@
<string key="NSName">_NSMainMenu</string>
</object>
<object class="NSWindowTemplate" id="972006081">
<int key="NSWindowStyleMask">15</int>
<int key="NSWindowStyleMask">13</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{335, 390}, {800, 600}}</string>
<int key="NSWTFlags">1954021376</int>
@ -396,7 +310,6 @@
<string key="NSFrameSize">{800, 600}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSClassName">RocketView</string>
</object>
@ -480,30 +393,6 @@
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">hide:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="755159360"/>
</object>
<int key="connectionID">367</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">hideOtherApplications:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="342932134"/>
</object>
<int key="connectionID">368</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">unhideAllApplications:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="908899353"/>
</object>
<int key="connectionID">370</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">showHelp:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="105068016"/>
@ -687,79 +576,22 @@
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="238522557"/>
<reference ref="755159360"/>
<reference ref="908899353"/>
<reference ref="632727374"/>
<reference ref="646227648"/>
<reference ref="609285721"/>
<reference ref="481834944"/>
<reference ref="304266470"/>
<reference ref="1046388886"/>
<reference ref="1056857174"/>
<reference ref="342932134"/>
</object>
<reference key="parent" ref="694149608"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">134</int>
<reference key="object" ref="755159360"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">150</int>
<reference key="object" ref="908899353"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">136</int>
<reference key="object" ref="632727374"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">144</int>
<reference key="object" ref="646227648"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">129</int>
<reference key="object" ref="609285721"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">143</int>
<reference key="object" ref="481834944"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">236</int>
<reference key="object" ref="304266470"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">131</int>
<reference key="object" ref="1046388886"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="752062318"/>
</object>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">149</int>
<reference key="object" ref="1056857174"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">145</int>
<reference key="object" ref="342932134"/>
<reference key="parent" ref="110575045"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">130</int>
<reference key="object" ref="752062318"/>
<reference key="parent" ref="1046388886"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">24</int>
<reference key="object" ref="835318025"/>
<object class="NSMutableArray" key="children">
@ -884,19 +716,10 @@
<string>124.IBPluginDependency</string>
<string>125.IBPluginDependency</string>
<string>126.IBPluginDependency</string>
<string>129.IBPluginDependency</string>
<string>130.IBPluginDependency</string>
<string>131.IBPluginDependency</string>
<string>134.IBPluginDependency</string>
<string>136.IBPluginDependency</string>
<string>143.IBPluginDependency</string>
<string>144.IBPluginDependency</string>
<string>145.IBPluginDependency</string>
<string>149.IBPluginDependency</string>
<string>150.IBPluginDependency</string>
<string>19.IBPluginDependency</string>
<string>23.IBPluginDependency</string>
<string>236.IBPluginDependency</string>
<string>239.IBPluginDependency</string>
<string>24.IBPluginDependency</string>
<string>29.IBPluginDependency</string>
@ -941,15 +764,6 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{928, 459}, {480, 360}}</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>

View File

@ -16,6 +16,8 @@
#include "../../sync/base.h"
#include "../../sync/data.h"
extern void Window_setTitle(const char* title);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct CopyEntry
@ -91,6 +93,13 @@ static inline int getTrackCount()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static inline int getRowPos()
{
return s_editorData.trackViewInfo.rowPos;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static int getNextTrack()
{
TrackData* trackData = &s_editorData.trackData;
@ -160,8 +169,6 @@ void Editor_create()
s_editorData.trackViewInfo.endRow = 10000;
Emgui_setDefaultFont();
LoadSave_loadRocketXML("/Users/emoon/code/amiga/tbl-newage/OriginalData/Demo4.rocket", getTrackData());
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -170,6 +177,7 @@ void Editor_setWindowSize(int x, int y)
{
s_editorData.trackViewInfo.windowSizeX = x;
s_editorData.trackViewInfo.windowSizeY = y;
Editor_updateTrackScroll();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -210,13 +218,12 @@ static int drawCurrentValue(int posX, int sizeY)
struct sync_track** tracks = getTracks();
active_track = getActiveTrack();
current_row = s_editorData.trackViewInfo.rowPos;
current_row = getRowPos();
if (tracks)
{
const struct sync_track* track = tracks[active_track];
int row = s_editorData.trackViewInfo.rowPos;
int idx = key_idx_floor(track, row);
int idx = key_idx_floor(track, current_row);
if (idx >= 0)
{
@ -230,7 +237,7 @@ static int drawCurrentValue(int posX, int sizeY)
}
}
value = sync_get_val(track, row);
value = sync_get_val(track, current_row);
}
snprintf(valueText, 256, "%f", value);
@ -293,32 +300,48 @@ static void drawStatus()
size += drawNameValue("Start Row", size, sizeY, &s_editorData.trackViewInfo.startRow, 0, 10000000, s_startRow);
size += drawNameValue("End Row", size, sizeY, &s_editorData.trackViewInfo.endRow, 0, 10000000, s_endRow);
printf("activeTrack %d\n", getActiveTrack());
Emgui_setDefaultFont();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Editor_updateTrackScroll()
{
int track_start_offset, sel_track, total_track_width = 0;
int track_start_pixel = s_editorData.trackViewInfo.startPixel;
TrackData* track_data = getTrackData();
TrackViewInfo* view_info = getTrackViewInfo();
total_track_width = TrackView_getWidth(getTrackViewInfo(), getTrackData());
track_start_offset = TrackView_getStartOffset();
track_start_pixel = eclampi(track_start_pixel, 0, emaxi(total_track_width - (view_info->windowSizeX / 2), 0));
sel_track = TrackView_getScrolledTrack(view_info, track_data, track_data->activeTrack,
track_start_offset - track_start_pixel);
if (sel_track != track_data->activeTrack)
TrackData_setActiveTrack(track_data, sel_track);
s_editorData.trackViewInfo.startPixel = track_start_pixel;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void drawHorizonalSlider()
{
int track_size, large_val;
int large_val;
TrackViewInfo* info = getTrackViewInfo();
//const int old_start = s_editorData.trackViewInfo.startTrack;
const int total_track_width = TrackView_getWidth(getTrackViewInfo(), getTrackData());
const int old_start = s_editorData.trackViewInfo.startPixel;
const int total_track_width = TrackView_getWidth(info, getTrackData()) - (info->windowSizeX / 2);
track_size = emaxi(total_track_width - info->windowSizeX, 0);
large_val = emaxi(track_size / 10, 1);
large_val = emaxi(total_track_width / 10, 1);
Emgui_slider(0, info->windowSizeY - 36, info->windowSizeX, 14, 0, track_size, large_val,
Emgui_slider(0, info->windowSizeY - 36, info->windowSizeX, 14, 0, total_track_width, large_val,
EMGUI_SLIDERDIR_HORIZONTAL, 1, &s_editorData.trackViewInfo.startPixel);
/*
if (old_start != s_editorData.trackViewInfo.startTrack)
{
setActiveTrack(s_editorData.trackViewInfo.startTrack);
}
*/
if (old_start != s_editorData.trackViewInfo.startPixel)
Editor_updateTrackScroll();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -346,7 +369,10 @@ void Editor_update()
bool need_update = internalUpdate();
if (need_update)
{
Editor_updateTrackScroll();
internalUpdate();
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -591,6 +617,7 @@ bool Editor_keyDown(int key, int modifiers)
else
t->folded = true;
Editor_updateTrackScroll();
Editor_update();
return true;
}
@ -598,7 +625,15 @@ bool Editor_keyDown(int key, int modifiers)
if (modifiers & EMGUI_KEY_COMMAND)
track = 0;
setActiveTrack(track < 0 ? 0 : track);
track = emaxi(0, track);
setActiveTrack(track);
if (!TrackView_isSelectedTrackVisible(getTrackViewInfo(), getTrackData(), track))
{
s_editorData.trackViewInfo.startPixel += TrackView_getTracksOffset(getTrackViewInfo(), getTrackData(), current_track, track);
Editor_updateTrackScroll();
}
if (modifiers & EMGUI_KEY_SHIFT)
{
@ -640,6 +675,7 @@ bool Editor_keyDown(int key, int modifiers)
else
t->folded = false;
Editor_updateTrackScroll();
Editor_update();
return true;
}
@ -652,6 +688,12 @@ bool Editor_keyDown(int key, int modifiers)
setActiveTrack(track);
if (!TrackView_isSelectedTrackVisible(getTrackViewInfo(), getTrackData(), track))
{
s_editorData.trackViewInfo.startPixel += TrackView_getTracksOffset(getTrackViewInfo(), getTrackData(), current_track, track);
Editor_updateTrackScroll();
}
if (modifiers & EMGUI_KEY_SHIFT)
{
Track* t = &trackData->tracks[track];
@ -863,15 +905,21 @@ bool Editor_keyDown(int key, int modifiers)
void Editor_scroll(float deltaX, float deltaY)
{
int current_row = s_editorData.trackViewInfo.rowPos;
int pixel_offset = s_editorData.trackViewInfo.startPixel;
int old_offset = s_editorData.trackViewInfo.startPixel;
TrackViewInfo* viewInfo = &s_editorData.trackViewInfo;
const int total_track_width = TrackView_getWidth(getTrackViewInfo(), getTrackData());
current_row += (int)deltaY;
pixel_offset += (int)(deltaX * 4.0f);
if (current_row < viewInfo->startRow || current_row >= viewInfo->endRow)
return;
s_editorData.trackViewInfo.startPixel += (int)(deltaX * 4.0f);
s_editorData.trackViewInfo.rowPos = eclampi(current_row, viewInfo->startRow, viewInfo->endRow);
s_editorData.trackViewInfo.startPixel = eclampi(pixel_offset, 0, total_track_width);
RemoteConnection_sendSetRowCommand(s_editorData.trackViewInfo.rowPos);
if (old_offset != s_editorData.trackViewInfo.startPixel)
Editor_updateTrackScroll();
Editor_update();
}
@ -987,7 +1035,7 @@ void Editor_timedUpdate()
{
int processed_commands = 0;
RemoteConnection_updateListner();
RemoteConnection_updateListner(getRowPos());
updateTrackStatus();
@ -1002,17 +1050,35 @@ void Editor_timedUpdate()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void setWindowTitle(const char* path)
{
char windowTitle[4096];
sprintf(windowTitle, "RocketEditor - (%s)", path);
Window_setTitle(windowTitle);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void onOpen()
{
if (LoadSave_loadRocketXMLDialog(&s_editorData.trackData))
char path[2048];
if (LoadSave_loadRocketXMLDialog(path, &s_editorData.trackData))
{
Editor_update();
setWindowTitle(path);
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void onSave()
{
LoadSave_saveRocketXMLDialog(&s_editorData.trackData);
char path[2048];
if (!LoadSave_saveRocketXMLDialog(path, &s_editorData.trackData))
return;
setWindowTitle(path);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -1022,7 +1088,6 @@ void Editor_menuEvent(int menuItem)
printf("%d\n", menuItem);
switch (menuItem)
{
//case EDITOR_MENU_NEW : onNew(); break;
case EDITOR_MENU_OPEN : onOpen(); break;
case EDITOR_MENU_SAVE :
case EDITOR_MENU_SAVE_AS : onSave(); break;

View File

@ -11,6 +11,7 @@ bool Editor_keyDown(int keyCode, int mod);
void Editor_setWindowSize(int x, int y);
void Editor_menuEvent(int menuItem);
void Editor_scroll(float deltaX, float deltaY);
void Editor_updateTrackScroll();
enum
{

View File

@ -205,7 +205,7 @@ static SOCKET clientConnect(SOCKET serverSocket, struct sockaddr_in* host)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RemoteConnection_updateListner()
void RemoteConnection_updateListner(int currentRow)
{
SOCKET clientSocket;
struct sockaddr_in client;
@ -225,7 +225,7 @@ void RemoteConnection_updateListner()
s_socket = clientSocket;
s_clientIndex = 0;
RemoteConnection_sendPauseCommand(true);
//RemoteConnection_sendSetRowCommand(trackView->getEditRow());
RemoteConnection_sendSetRowCommand(currentRow);
}
else
{

View File

@ -9,7 +9,7 @@ struct sync_track;
// Listen for incoming connections
bool RemoteConnection_createListner();
void RemoteConnection_updateListner();
void RemoteConnection_updateListner(int currentRow);
void RemoteConnection_close();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -463,7 +463,7 @@ static int processTrack(Track* track, int posX, int* startTrack, int* endTrack,
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static int setActiveTrack(TrackViewInfo* viewInfo, TrackData* trackData, int activeTrack, int posX)
int TrackView_getScrolledTrack(TrackViewInfo* viewInfo, TrackData* trackData, int activeTrack, int posX)
{
int i, j, track_count = trackData->syncData.num_tracks;
int start_track = -1, end_track = -1;
@ -496,25 +496,15 @@ static int setActiveTrack(TrackViewInfo* viewInfo, TrackData* trackData, int act
}
if (activeTrack > start_track && activeTrack < end_track)
{
if (activeTrack == -1)
__asm__ ("int $3");
return activeTrack;
}
if (activeTrack < start_track)
{
if (start_track == -1)
__asm__ ("int $3");
return start_track;
}
if (activeTrack > end_track)
{
if (end_track == -1)
__asm__ ("int $3");
return end_track;
if (end_track != -1)
return end_track;
}
return activeTrack;
@ -525,7 +515,6 @@ static int setActiveTrack(TrackViewInfo* viewInfo, TrackData* trackData, int act
bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
{
struct TrackInfo info;
int sel_track = 0; //trackData->activeTrack;
int start_track = 0; //viewInfo->startTrack;
int x_pos = 128;
int end_track = 0;
@ -566,7 +555,7 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
if (trackData->groupCount == 0)
return false;
x_pos = 50 + -viewInfo->startPixel;
x_pos = TrackView_getStartOffset() + -viewInfo->startPixel;
printRowNumbers(2, adjust_top_size, end_row, y_pos_row, font_size, 8, y_end_border);
Emgui_drawBorder(border_color, border_color, 48, info.startY - font_size * 4, viewInfo->windowSizeX - 80, (info.endSizeY - info.startY) + 40);
@ -575,10 +564,10 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
Emgui_setScissor(48, 0, viewInfo->windowSizeX - 80, viewInfo->windowSizeY);
Emgui_setFont(viewInfo->smallFontId);
sel_track = setActiveTrack(viewInfo, trackData, trackData->activeTrack, x_pos);
///sel_track = setActiveTrack(viewInfo, trackData, trackData->activeTrack, x_pos);
if (sel_track != trackData->activeTrack)
TrackData_setActiveTrack(trackData, sel_track);
//if (sel_track != trackData->activeTrack)
// TrackData_setActiveTrack(trackData, sel_track);
for (i = start_track, end_track = trackData->syncData.num_tracks; i < end_track; )
{
@ -637,3 +626,73 @@ int TrackView_getWidth(TrackViewInfo* viewInfo, struct TrackData* trackData)
return size;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int TrackView_getStartOffset()
{
return 50;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool TrackView_isSelectedTrackVisible(TrackViewInfo* viewInfo, TrackData* trackData, int track)
{
return TrackView_getScrolledTrack(viewInfo, trackData, track, TrackView_getStartOffset() - viewInfo->startPixel) == track;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int TrackView_getTracksOffset(TrackViewInfo* viewInfo, TrackData* trackData, int prevTrack, int nextTrack)
{
int i, j, size = 0;
bool flip = false;
if (prevTrack == nextTrack)
return 0;
// handle the case when tracks are flipped
if (prevTrack > nextTrack)
{
int temp = nextTrack;
nextTrack = prevTrack;
prevTrack = temp;
flip = true;
}
for (i = prevTrack; i < nextTrack; )
{
Track* t = &trackData->tracks[i];
// if track has no group its always safe to assume that can select the track
if (t->group->trackCount == 1)
{
size += getTrackSize(viewInfo, t); ++i;
continue;
}
if (t->group->folded)
{
size += track_size_folded;
i += t->group->trackCount;
continue;
}
for (j = 0; j < t->group->trackCount; ++j)
{
if (i + j == nextTrack)
goto end;
size += getTrackSize(viewInfo, t->group->t.tracks[j]);
}
i += t->group->trackCount;
}
end:;
return flip ? -size : size;
}

View File

@ -5,6 +5,7 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct TrackData* trackData;
struct TrackViewInfo;
typedef struct TrackViewInfo
{
@ -30,4 +31,8 @@ typedef struct TrackViewInfo
void TrackView_init();
bool TrackView_render(TrackViewInfo* viewInfo, struct TrackData* trackData);
int TrackView_getWidth(TrackViewInfo* viewInfo, struct TrackData* trackData);
int TrackView_getScrolledTrack(struct TrackViewInfo* viewInfo, struct TrackData* trackData, int activeTrack, int posX);
int TrackView_getStartOffset();
int TrackView_getTracksOffset(struct TrackViewInfo* viewInfo, struct TrackData* trackData, int prevTrack, int nextTrack);
bool TrackView_isSelectedTrackVisible(struct TrackViewInfo* viewInfo, struct TrackData* trackData, int track);

View File

@ -162,10 +162,8 @@ int LoadSave_loadRocketXML(const char* path, TrackData* trackData)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int LoadSave_loadRocketXMLDialog(TrackData* trackData)
int LoadSave_loadRocketXMLDialog(char* path, TrackData* trackData)
{
char path[512];
if (!Dialog_open(path))
return false;
@ -239,14 +237,11 @@ int LoadSave_saveRocketXML(const char* path, TrackData* trackData)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int LoadSave_saveRocketXMLDialog(TrackData* trackData)
int LoadSave_saveRocketXMLDialog(char* path, TrackData* trackData)
{
char path[512];
if (!Dialog_save(path))
return false;
return LoadSave_saveRocketXML(path, trackData);
}

View File

@ -3,7 +3,7 @@
struct TrackData;
int LoadSave_loadRocketXML(const char* path, struct TrackData* trackData);
int LoadSave_loadRocketXMLDialog(struct TrackData* trackData);
int LoadSave_loadRocketXMLDialog(char* path, struct TrackData* trackData);
int LoadSave_saveRocketXML(const char* path, struct TrackData* trackData);
int LoadSave_saveRocketXMLDialog(struct TrackData* trackData);
int LoadSave_saveRocketXMLDialog(char* path, struct TrackData* trackData);

View File

@ -5,6 +5,7 @@
#include <GFXBackend.h>
NSOpenGLContext* g_context = 0;
NSWindow* g_window = 0;
@implementation RocketView
@ -33,6 +34,7 @@ NSOpenGLContext* g_context = 0;
[oglContext makeCurrentContext];
g_context = oglContext;
g_window = [self window];
EMGFXBackend_create();
Editor_create();
@ -66,6 +68,7 @@ NSOpenGLContext* g_context = 0;
- (void)drawRect:(NSRect)frameRect
{
[oglContext update];
g_window = [self window];
EMGFXBackend_updateViewPort((int)frameRect.size.width, (int)frameRect.size.height);
Editor_setWindowSize((int)frameRect.size.width, (int)frameRect.size.height);
@ -159,7 +162,6 @@ NSOpenGLContext* g_context = 0;
Editor_update();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- (void)scrollWheel:(NSEvent *)theEvent
@ -209,3 +211,11 @@ void swapBuffers()
{
[g_context flushBuffer];
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Window_setTitle(const char* title)
{
[g_window setTitle:[NSString stringWithUTF8String:title]];
}