summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Bornecrantz <wallbraker@gmail.com>2009-06-09 15:55:12 +0100
committerJakob Bornecrantz <wallbraker@gmail.com>2009-06-09 15:55:12 +0100
commit6498f763a38869322c0063dd2a701fe5c06c70dc (patch)
tree234cc3f26462940896a3c31dbbb19a116cb56b69
parent359805d723586ba39c83cadf481a04e8ae8ce674 (diff)
Support viewing currently bound textures from context view
-rw-r--r--res/main.xml173
-rw-r--r--src/context.c71
-rw-r--r--src/main.c19
-rw-r--r--src/program.h20
4 files changed, 248 insertions, 35 deletions
diff --git a/res/main.xml b/res/main.xml
index 8f8e485..b9d9cf3 100644
--- a/res/main.xml
+++ b/res/main.xml
@@ -270,7 +270,7 @@
<child>
<object class="GtkTable" id="_table1">
<property name="visible">True</property>
- <property name="n_rows">2</property>
+ <property name="n_rows">3</property>
<property name="n_columns">2</property>
<child>
<object class="GtkLabel" id="_label1">
@@ -283,7 +283,7 @@
<object class="GtkLabel" id="_label2">
<property name="visible">True</property>
<property name="xalign">1</property>
- <property name="label" translatable="yes">Surfaces: </property>
+ <property name="label" translatable="yes">Textures: </property>
</object>
<packing>
<property name="top_attach">1</property>
@@ -291,6 +291,17 @@
</packing>
</child>
<child>
+ <object class="GtkLabel" id="_label3">
+ <property name="visible">True</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Surfaces: </property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkHButtonBox" id="_hbuttonbox1">
<property name="visible">True</property>
<property name="spacing">2</property>
@@ -333,9 +344,91 @@
<object class="GtkHButtonBox" id="_hbuttonbox2">
<property name="visible">True</property>
<property name="spacing">2</property>
+ <child>
+ <object class="GtkToggleButton" id="_togglebutton4">
+ <property name="label" translatable="yes">Texture 1</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="related_action">ra_ctx_texture0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="_togglebutton5">
+ <property name="label" translatable="yes">Texture 2</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="related_action">ra_ctx_texture1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="_togglebutton6">
+ <property name="label" translatable="yes">Texture 3</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="related_action">ra_ctx_texture2</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="_togglebutton7">
+ <property name="label" translatable="yes">Texture 4</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="related_action">ra_ctx_texture3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="_togglebutton8">
+ <property name="label" translatable="yes">Texture 5</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="related_action">ra_ctx_texture4</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="_hbuttonbox3">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
<property name="layout_style">start</property>
<child>
- <object class="GtkToggleButton" id="_togglebutton3">
+ <object class="GtkToggleButton" id="_togglebutton19">
<property name="label" translatable="yes">Color 1</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -349,7 +442,7 @@
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="_togglebutton4">
+ <object class="GtkToggleButton" id="_togglebutton20">
<property name="label" translatable="yes">Color 2</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -363,7 +456,7 @@
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="_togglebutton5">
+ <object class="GtkToggleButton" id="_togglebutton21">
<property name="label" translatable="yes">Color 3</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -377,7 +470,7 @@
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="_togglebutton6">
+ <object class="GtkToggleButton" id="_togglebutton22">
<property name="label" translatable="yes">ZS</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -394,8 +487,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
</packing>
</child>
</object>
@@ -512,4 +605,68 @@
<property name="draw_as_radio">True</property>
<property name="group">ra_ctx_fragment</property>
</object>
+ <object class="GtkRadioAction" id="ra_ctx_texture0">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture1">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture2">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture3">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture4">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture5">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture6">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture7">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture8">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture9">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture10">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture11">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture12">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture13">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture14">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
+ <object class="GtkRadioAction" id="ra_ctx_texture15">
+ <property name="draw_as_radio">True</property>
+ <property name="group">ra_ctx_fragment</property>
+ </object>
</interface>
diff --git a/src/context.c b/src/context.c
index 2ed0cf8..03eea96 100644
--- a/src/context.c
+++ b/src/context.c
@@ -193,10 +193,10 @@ void context_unselected(struct program *p)
for (i = 0; i < CTX_VIEW_NUM; i++)
g_signal_handler_disconnect(p->context.ra[i], p->context.sid[i]);
- g_signal_handler_disconnect(p->tool.step, p->context.sid[12]);
- g_signal_handler_disconnect(p->tool.break_before, p->context.sid[13]);
- g_signal_handler_disconnect(p->tool.break_after, p->context.sid[14]);
- g_signal_handler_disconnect(p->tool.flush, p->context.sid[15]);
+ g_signal_handler_disconnect(p->tool.step, p->context.sid[i++]);
+ g_signal_handler_disconnect(p->tool.break_before, p->context.sid[i++]);
+ g_signal_handler_disconnect(p->tool.break_after, p->context.sid[i++]);
+ g_signal_handler_disconnect(p->tool.flush, p->context.sid[i++]);
}
void context_selected(struct program *p)
@@ -206,10 +206,10 @@ void context_selected(struct program *p)
for (i = 0; i < CTX_VIEW_NUM; i++)
p->context.sid[i] = g_signal_connect(p->context.ra[i], "toggled", G_CALLBACK(ra), p);
- p->context.sid[12] = g_signal_connect(p->tool.step, "clicked", G_CALLBACK(step), p);
- p->context.sid[13] = g_signal_connect(p->tool.break_before, "toggled", G_CALLBACK(break_before), p);
- p->context.sid[14] = g_signal_connect(p->tool.break_after, "toggled", G_CALLBACK(break_after), p);
- p->context.sid[15] = g_signal_connect(p->tool.flush, "clicked", G_CALLBACK(flush), p);
+ p->context.sid[i++] = g_signal_connect(p->tool.step, "clicked", G_CALLBACK(step), p);
+ p->context.sid[i++] = g_signal_connect(p->tool.break_before, "toggled", G_CALLBACK(break_before), p);
+ p->context.sid[i++] = g_signal_connect(p->tool.break_after, "toggled", G_CALLBACK(break_after), p);
+ p->context.sid[i++] = g_signal_connect(p->tool.flush, "clicked", G_CALLBACK(flush), p);
gtk_widget_show(p->main.context_view);
gtk_widget_show(p->tool.break_before);
@@ -306,31 +306,52 @@ static gboolean context_action_info_info(struct rbug_event *e,
ret = main_find_id(info->vertex, &iter, p);
break;
case CTX_VIEW_COLOR0:
- if (info->cbufs_len < 1)
- break;
- if (info->cbufs[0] == 0)
- break;
- ret = main_find_id(info->cbufs[0], &iter, p);
- break;
case CTX_VIEW_COLOR1:
- if (info->cbufs_len < 2)
- break;
- if (info->cbufs[1] == 0)
- break;
- ret = main_find_id(info->cbufs[1], &iter, p);
- break;
case CTX_VIEW_COLOR2:
- if (info->cbufs_len < 3)
- break;
- if (info->cbufs[2] == 0)
+ case CTX_VIEW_COLOR3:
+ case CTX_VIEW_COLOR4:
+ case CTX_VIEW_COLOR5:
+ case CTX_VIEW_COLOR6:
+ case CTX_VIEW_COLOR7:
+ {
+ unsigned i = p->context.view_id - CTX_VIEW_COLOR0;
+ if (info->cbufs_len < i + 1)
+ break;
+ if (info->cbufs[i] == 0)
+ break;
+ ret = main_find_id(info->cbufs[i], &iter, p);
break;
- ret = main_find_id(info->cbufs[2], &iter, p);
- break;
+ }
case CTX_VIEW_ZS:
if (info->zsbuf == 0)
break;
ret = main_find_id(info->zsbuf, &iter, p);
break;
+ case CTX_VIEW_TEXTURE0:
+ case CTX_VIEW_TEXTURE1:
+ case CTX_VIEW_TEXTURE2:
+ case CTX_VIEW_TEXTURE3:
+ case CTX_VIEW_TEXTURE4:
+ case CTX_VIEW_TEXTURE5:
+ case CTX_VIEW_TEXTURE6:
+ case CTX_VIEW_TEXTURE7:
+ case CTX_VIEW_TEXTURE8:
+ case CTX_VIEW_TEXTURE9:
+ case CTX_VIEW_TEXTURE10:
+ case CTX_VIEW_TEXTURE11:
+ case CTX_VIEW_TEXTURE12:
+ case CTX_VIEW_TEXTURE13:
+ case CTX_VIEW_TEXTURE14:
+ case CTX_VIEW_TEXTURE15:
+ {
+ unsigned i = p->context.view_id - CTX_VIEW_TEXTURE0;
+ if (info->texs_len < i + 1)
+ break;
+ if (info->texs[i] == 0)
+ break;
+ ret = main_find_id(info->texs[i], &iter, p);
+ break;
+ }
default:
break;
}
diff --git a/src/main.c b/src/main.c
index a3a80dd..f57e4ba 100644
--- a/src/main.c
+++ b/src/main.c
@@ -439,6 +439,25 @@ void main_window_create(struct program *p)
p->context.ra[10] = gtk_builder_get_object(builder, "ra_ctx_color6");
p->context.ra[11] = gtk_builder_get_object(builder, "ra_ctx_color7");
+ p->context.ra[12] = gtk_builder_get_object(builder, "ra_ctx_texture0");
+ p->context.ra[13] = gtk_builder_get_object(builder, "ra_ctx_texture1");
+ p->context.ra[14] = gtk_builder_get_object(builder, "ra_ctx_texture2");
+ p->context.ra[15] = gtk_builder_get_object(builder, "ra_ctx_texture3");
+ p->context.ra[16] = gtk_builder_get_object(builder, "ra_ctx_texture4");
+ p->context.ra[17] = gtk_builder_get_object(builder, "ra_ctx_texture5");
+ p->context.ra[18] = gtk_builder_get_object(builder, "ra_ctx_texture6");
+ p->context.ra[19] = gtk_builder_get_object(builder, "ra_ctx_texture7");
+ p->context.ra[20] = gtk_builder_get_object(builder, "ra_ctx_texture8");
+ p->context.ra[21] = gtk_builder_get_object(builder, "ra_ctx_texture9");
+ p->context.ra[22] = gtk_builder_get_object(builder, "ra_ctx_texture10");
+ p->context.ra[23] = gtk_builder_get_object(builder, "ra_ctx_texture11");
+ p->context.ra[24] = gtk_builder_get_object(builder, "ra_ctx_texture12");
+ p->context.ra[25] = gtk_builder_get_object(builder, "ra_ctx_texture13");
+ p->context.ra[26] = gtk_builder_get_object(builder, "ra_ctx_texture14");
+ p->context.ra[27] = gtk_builder_get_object(builder, "ra_ctx_texture15");
+
+ g_assert(27 < CTX_VIEW_NUM);
+
p->main.draw = draw;
p->main.window = window;
p->main.textview = textview;
diff --git a/src/program.h b/src/program.h
index c49101e..3d8b779 100644
--- a/src/program.h
+++ b/src/program.h
@@ -67,6 +67,22 @@ enum ctx_view_id {
CTX_VIEW_COLOR5,
CTX_VIEW_COLOR6,
CTX_VIEW_COLOR7,
+ CTX_VIEW_TEXTURE0,
+ CTX_VIEW_TEXTURE1,
+ CTX_VIEW_TEXTURE2,
+ CTX_VIEW_TEXTURE3,
+ CTX_VIEW_TEXTURE4,
+ CTX_VIEW_TEXTURE5,
+ CTX_VIEW_TEXTURE6,
+ CTX_VIEW_TEXTURE7,
+ CTX_VIEW_TEXTURE8,
+ CTX_VIEW_TEXTURE9,
+ CTX_VIEW_TEXTURE10,
+ CTX_VIEW_TEXTURE11,
+ CTX_VIEW_TEXTURE12,
+ CTX_VIEW_TEXTURE13,
+ CTX_VIEW_TEXTURE14,
+ CTX_VIEW_TEXTURE15,
CTX_VIEW_NUM,
};
@@ -135,9 +151,9 @@ struct program
struct {
/* signal ids */
- gulong sid[16];
+ gulong sid[6 + CTX_VIEW_NUM];
- GObject *ra[12];
+ GObject *ra[CTX_VIEW_NUM];
enum ctx_view_id view_id;