[nexuiz-commits] r8544 - in trunk: data data/gfx/hud data/qcsrc/client data/qcsrc/common data/qcsrc/server misc/mediasource/hud misc/mediasource/hud/votedialog misc/mediasource/hud/votedialog/textures

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Jan 24 06:35:26 EST 2010


Author: fruitiex
Date: 2010-01-24 06:35:25 -0500 (Sun, 24 Jan 2010)
New Revision: 8544

Added:
   trunk/data/gfx/hud/voteprogress_back.tga
   trunk/data/gfx/hud/voteprogress_prog.tga
   trunk/data/gfx/hud/voteprogress_voted.tga
   trunk/misc/mediasource/hud/votedialog/
   trunk/misc/mediasource/hud/votedialog/textures/
   trunk/misc/mediasource/hud/votedialog/textures/sb_scoreboard_bg.tga
   trunk/misc/mediasource/hud/votedialog/voteprogress.svg
Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/client/Main.qc
   trunk/data/qcsrc/client/sbar.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/vote.qc
Log:
graphical vote dialog


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2010-01-23 22:20:21 UTC (rev 8543)
+++ trunk/data/defaultNexuiz.cfg	2010-01-24 11:35:25 UTC (rev 8544)
@@ -1332,6 +1332,7 @@
 seta sbar_showweaponicons 1 "1 = show icons of weapons that you have"
 seta sbar_timer_increment 0 "1 = show elapsed time on the timer"
 seta sbar_timer_scale 1 "scale multiplier of the timer"
+seta sbar_alreadyvoted_alpha 0.75 "alpha of the vote dialog after you have voted"
 
 // for menu server list (eventually make them have engine support?)
 seta menu_slist_showfull 1 "show servers even if they are full and have no slots to join"

Added: trunk/data/gfx/hud/voteprogress_back.tga
===================================================================
(Binary files differ)


Property changes on: trunk/data/gfx/hud/voteprogress_back.tga
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/gfx/hud/voteprogress_prog.tga
===================================================================
(Binary files differ)


Property changes on: trunk/data/gfx/hud/voteprogress_prog.tga
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/gfx/hud/voteprogress_voted.tga
===================================================================
(Binary files differ)


Property changes on: trunk/data/gfx/hud/voteprogress_voted.tga
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc	2010-01-23 22:20:21 UTC (rev 8543)
+++ trunk/data/qcsrc/client/Main.qc	2010-01-24 11:35:25 UTC (rev 8544)
@@ -1164,6 +1164,22 @@
 	playerslots[e].ping_movementloss = ml / 255.0;
 }
 
+void Net_VoteDialog(float highlight) {
+	if(highlight) {
+		vote_highlighted = ReadShort();
+		return;
+	}
+
+	vote_yescount = ReadShort();
+	vote_nocount = ReadShort();
+	vote_needed = ReadShort();
+	vote_active = 1;
+}
+
+void Net_VoteDialogReset() {
+	vote_active = 0;
+}
+
 // CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
 // You must ALWAYS first acquire the temporary ID, which is sent as a byte.
 // Return value should be 1 if CSQC handled the temporary entity, otherwise return 0 to have the engine process the event.
@@ -1206,6 +1222,14 @@
 			Net_TeamNagger();
 			bHandled = true;
 			break;
+		case TE_CSQC_VOTE:
+			Net_VoteDialog(ReadByte());
+			bHandled = true;
+			break;
+		case TE_CSQC_VOTERESET:
+			Net_VoteDialogReset();
+			bHandled = true;
+			break;
         case TE_CSQC_LIGHTNINGARC:
             Net_ReadLightningarc();
             bHandled = true;

Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc	2010-01-23 22:20:21 UTC (rev 8543)
+++ trunk/data/qcsrc/client/sbar.qc	2010-01-24 11:35:25 UTC (rev 8544)
@@ -2575,6 +2575,16 @@
 		CSQC_ctf_hudreset();
 }
 
+float vote_yescount;
+float vote_nocount;
+float vote_needed;
+float vote_highlighted; // currently selected vote
+
+float vote_active; // is there an active vote?
+float vote_prev; // previous state of vote_active to check for a change
+float vote_alpha;
+float vote_change; // "time" when vote_active changed
+
 void Sbar_Draw (void)
 {
 	// vectors for top right, bottom right, bottom and bottom left corners
@@ -2721,28 +2731,7 @@
 		s = strcat("^2Press ^3", getcommandkey("ready", "ready"), "^2 to end warmup");
 		o = Sbar_DrawNoteLine(o, s);
 	}
-	if(vote_waiting)
-	{
-		s = strcat("^2A vote has been called for ^1",  textShortenToWidth(vote_called_vote, vid_conwidth/2/sbar_fontsize_x, stringwidth_colors));
-		o = Sbar_DrawNoteLine(o, s);
 
-		if(vote_waiting_for_me)
-		{
-			s = strcat(blinkcolor, "Press ^3", getcommandkey("vote yes", "vyes"), blinkcolor, " to accept");
-			o = Sbar_DrawNoteLine(o, s);
-
-			s = strcat(blinkcolor, "Press ^3", getcommandkey("vote no", "vno"), blinkcolor, " to reject");
-			o = Sbar_DrawNoteLine(o, s);
-
-			s = strcat(blinkcolor, "Press ^3", getcommandkey("vote abstain", "vabstain"), blinkcolor, " to abstain");
-			o = Sbar_DrawNoteLine(o, s);
-		}
-		else
-		{
-			s = strcat("^2Waiting for others to vote...");
-			o = Sbar_DrawNoteLine(o, s);
-		}
-	}
 	if(teamplay && !intermission && !spectatee_status && gametype != GAME_CA && teamnagger)
 	{
 		entity tm;
@@ -2773,6 +2762,63 @@
 		}
 	}
 
+	if(vote_active != vote_prev) {
+		vote_change = time;
+		vote_prev = bound(0, vote_active, 1);
+	}
+
+	if(vote_active)
+		vote_alpha = bound(0, (time - vote_change) * 2, 1);
+	else
+		vote_alpha = bound(0, 1 - (time - vote_change) * 2, 1);
+
+	if(vote_alpha) {
+		float a;
+		a = vote_alpha * bound(cvar_or("sbar_vote_alreadyvoted_alpha", 0.75), 1 - vote_highlighted, 1);
+
+		color_x = cvar("sbar_color_bg_r");
+		color_y = cvar("sbar_color_bg_g");
+		color_z = cvar("sbar_color_bg_b");
+
+		vector origin = bottomright - '290 135 0';
+		vector size = '280 70 0';
+		drawpic(origin, "gfx/hud/voteprogress_back", size, color, a * sbar_alpha_bg, DRAWFLAG_NORMAL);
+
+		string s;
+	        s = "A vote has been called for: ";
+		drawstring(origin + '0.5 0 0' * size_x + '0 0.1 0' * size_y - '6 0 0' * stringwidth(s, FALSE), s, '12 12 0', '1 1 1', a * sbar_alpha_fg, DRAWFLAG_NORMAL);
+		s = textShortenToWidth(vote_called_vote, size_x * 0.95, stringwidth_colors);
+		drawcolorcodedstring(origin + '0.5 0 0' * size_x + '0 0.3 0' * size_y - '5 0 0' * stringwidth(s, FALSE), s, '10 10 0', a * sbar_alpha_fg, DRAWFLAG_NORMAL);
+
+		// print the yes/no counts
+		s = strcat("Yes: ", ftos(vote_yescount));
+		drawstring(origin + '0 0.6 0' * size_y + '0.02 0 0' * size_x, s, '12 12 0', '0 1 0', a * sbar_alpha_fg, DRAWFLAG_NORMAL);
+		s = strcat("No: ", ftos(vote_nocount));
+		drawstring(origin + '0 0.6 0' * size_y + '0.98 0 0' * size_x - '12 0 0' * stringwidth(s, FALSE), s, '12 12 0', '1 0 0', a * sbar_alpha_fg, DRAWFLAG_NORMAL);
+
+		// draw the progress bars
+		drawsetcliparea(origin_x, origin_y, size_x * 0.5 * (vote_yescount/vote_needed), size_y);
+		drawpic(origin, "gfx/hud/voteprogress_prog", size, '0 1 0', a * sbar_alpha_fg, DRAWFLAG_NORMAL);
+
+		drawsetcliparea(origin_x + size_x - size_x * 0.5 * (vote_nocount/vote_needed), origin_y, size_x * 0.5, size_y);
+		drawpic(origin, "gfx/hud/voteprogress_prog", size, '1 0 0', a * sbar_alpha_fg, DRAWFLAG_NORMAL);
+
+		// draw the highlights
+		if(vote_highlighted == 1) {
+			drawsetcliparea(origin_x, origin_y, size_x * 0.5, size_y);
+			drawpic(origin, "gfx/hud/voteprogress_voted", size, '0 1 0', a * sbar_alpha_fg, DRAWFLAG_NORMAL);
+		}
+		else if(vote_highlighted == 2) {
+			drawsetcliparea(origin_x + 0.5 * size_x, origin_y, size_x * 0.5, size_y);
+			drawpic(origin, "gfx/hud/voteprogress_voted", size, '1 0 0', a * sbar_alpha_fg, DRAWFLAG_NORMAL);
+		}
+
+		drawresetcliparea();
+	}
+	else if(!vote_active) {
+		vote_highlighted = 0;
+	}
+
 	Sbar_UpdatePlayerTeams();
 	if (intermission == 2) // map voting screen
 	{

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2010-01-23 22:20:21 UTC (rev 8543)
+++ trunk/data/qcsrc/common/constants.qh	2010-01-24 11:35:25 UTC (rev 8544)
@@ -53,6 +53,8 @@
 const float TE_CSQC_LIGHTNINGARC = 105;
 const float TE_CSQC_TEAMNAGGER = 106;
 const float TE_CSQC_PINGPLREPORT = 107;
+const float TE_CSQC_VOTE = 108;
+const float TE_CSQC_VOTERESET = 109;
 
 const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder
 const float RACE_NET_CHECKPOINT_CLEAR = 1;

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2010-01-23 22:20:21 UTC (rev 8543)
+++ trunk/data/qcsrc/server/clientcommands.qc	2010-01-24 11:35:25 UTC (rev 8544)
@@ -29,10 +29,7 @@
 
 	if(nags & 128)
 	{
-		if(votecalled)
-			WriteString(MSG_ENTITY, votecalledvote_display);
-		else
-			WriteString(MSG_ENTITY, "");
+		WriteString(MSG_ENTITY, votecalledvote_display);
 	}
 
 	if(nags & 1)

Modified: trunk/data/qcsrc/server/vote.qc
===================================================================
--- trunk/data/qcsrc/server/vote.qc	2010-01-23 22:20:21 UTC (rev 8543)
+++ trunk/data/qcsrc/server/vote.qc	2010-01-24 11:35:25 UTC (rev 8544)
@@ -116,6 +116,18 @@
 	return TRUE;
 }
 
+void VoteDialog_UpdateHighlight(float selected) {
+	WriteByte(MSG_ONE, SVC_TEMPENTITY);
+	WriteByte(MSG_ONE, TE_CSQC_VOTE);
+	WriteByte(MSG_ONE, 1);
+	WriteShort(MSG_ONE, selected);
+}
+
+void VoteDialog_Reset() {
+	WriteByte(MSG_ALL, SVC_TEMPENTITY);
+	WriteByte(MSG_ALL, TE_CSQC_VOTERESET);
+}
+
 float GameCommand_Vote(string s, entity e) {
 	float argc;
 	argc = tokenize_console(s);
@@ -169,6 +181,8 @@
 							GameLogEcho(strcat(":vote:vcall:", ftos(votecaller.playerid), ":", votecalledvote_display));
 						VoteCount(); // needed if you are the only one
 						Nagger_VoteChanged();
+						msg_entity = e;
+						VoteDialog_UpdateHighlight(1);
 					} else {
 						print_to(e, "^1This vote is not ok. See 'vhelp' for more info.");
 					}
@@ -180,10 +194,13 @@
 			if(!votecalled) {
 				print_to(e, "^1No vote called.");
 			} else if(e == votecaller) { // the votecaller can stop a vote
+				VoteDialog_Reset();
 				VoteStop(e);
 			} else if(!e) { // server admin / console can too
+				VoteDialog_Reset();
 				VoteStop(e);
 			} else if(e.vote_master) { // masters can too
+				VoteDialog_Reset();
 				VoteStop(e);
 			} else {
 				print_to(e, "^1You are not allowed to stop that Vote.");
@@ -257,6 +274,8 @@
 				print_to(e, "^1You can't vote from the server console.");
 			} else if(e.vote_vote == 0
 				  || cvar("sv_vote_change")) {
+				msg_entity = e;
+				VoteDialog_UpdateHighlight(1);
 				print_to(e, "^1You accepted the vote.");
 				e.vote_vote = 1;
 				centerprint_expire(e, CENTERPRIO_VOTE);
@@ -273,6 +292,8 @@
 				print_to(e, "^1You can't vote from the server console.");
 			} else if(e.vote_vote == 0
 				  || cvar("sv_vote_change")) {
+				msg_entity = e;
+				VoteDialog_UpdateHighlight(2);
 				print_to(e, "^1You rejected the vote.");
 				e.vote_vote = -1;
 				centerprint_expire(e, CENTERPRIO_VOTE);
@@ -446,7 +467,6 @@
 	votecalled = FALSE;
 	votecalledmaster = FALSE;
 	votefinished = 0;
-	Nagger_VoteChanged();
 }
 
 void VoteAccept() {
@@ -519,6 +539,15 @@
 	}
 }
 
+void VoteDialog_Update(float msg, float vyes, float vno, float needed) {
+	WriteByte(msg, SVC_TEMPENTITY);
+	WriteByte(msg, TE_CSQC_VOTE);
+	WriteByte(msg, 0);
+	WriteShort(msg, vyes);
+	WriteShort(msg, vno);
+	WriteShort(msg, needed);
+}
+
 void VoteCount() {
 	local float playercount;
 	playercount = 0;
@@ -568,6 +597,12 @@
 		playercount = realplayercount;
 	}
 
+	float votefactor, simplevotefactor;
+	votefactor = bound(0.5, cvar("sv_vote_majority_factor"), 0.999);
+	simplevotefactor = cvar("sv_vote_simple_majority_factor");
+	float needed;
+	needed = floor((playercount - abstaincount) * max(votefactor, simplevotefactor)) + 1;
+	VoteDialog_Update(MSG_ALL, yescount, nocount, needed);
 
 	if(votecalledmaster
 	   && playercount == 1) {
@@ -583,18 +618,17 @@
 		}
 		VoteReset();
 	} else {
-		float votefactor, simplevotefactor;
-		votefactor = bound(0.5, cvar("sv_vote_majority_factor"), 0.999);
-		simplevotefactor = cvar("sv_vote_simple_majority_factor");
 		if(yescount > (playercount - abstaincount) * votefactor)
 		{
 			VoteSpam(yescount, nocount, abstaincount, playercount - yescount - nocount - abstaincount, -1, "yes");
 			VoteAccept();
+			VoteDialog_Reset();
 		}
 		else if(nocount >= (playercount - abstaincount) * (1 - votefactor)) // that means, yescount cannot reach minyes any more
 		{
 			VoteSpam(yescount, nocount, abstaincount, playercount - yescount - nocount - abstaincount, -1, "no");
 			VoteReject();
+			VoteDialog_Reset();
 		}
 		else if(time > votefinished)
 		{
@@ -621,8 +655,7 @@
 				VoteSpam(yescount, nocount, abstaincount, playercount - yescount - nocount - abstaincount, floor((playercount - abstaincount) * votefactor) + 1, "timeout");
 				VoteTimeout();
 			}
+		VoteDialog_Reset();
 		}
 	}
-
-	Nagger_VoteCountChanged();
 }

Added: trunk/misc/mediasource/hud/votedialog/textures/sb_scoreboard_bg.tga
===================================================================
(Binary files differ)


Property changes on: trunk/misc/mediasource/hud/votedialog/textures/sb_scoreboard_bg.tga
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/misc/mediasource/hud/votedialog/voteprogress.svg
===================================================================
--- trunk/misc/mediasource/hud/votedialog/voteprogress.svg	                        (rev 0)
+++ trunk/misc/mediasource/hud/votedialog/voteprogress.svg	2010-01-24 11:35:25 UTC (rev 8544)
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="512"
+   height="128"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="voteprogress.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/sev/Desktop/data/voteprogress/votedprogress.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 64 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="512 : 64 : 1"
+       inkscape:persp3d-origin="256 : 42.666667 : 1"
+       id="perspective41" />
+    <pattern
+       patternUnits="userSpaceOnUse"
+       width="1024"
+       height="384"
+       patternTransform="translate(0,-128)"
+       id="pattern3921">
+      <image
+         xlink:href="textures/sb_scoreboard_bg.tga"
+         sodipodi:absref="/home/sev/.nexuiz/data/voteprogress/textures/sb_scoreboard_bg.tga"
+         width="1024"
+         height="384"
+         id="image2418"
+         x="0"
+         y="0" />
+    </pattern>
+    <linearGradient
+       id="linearGradient3960">
+      <stop
+         id="stop3962"
+         offset="0"
+         style="stop-color:#00bf00;stop-opacity:1;" />
+      <stop
+         id="stop3964"
+         offset="1"
+         style="stop-color:#003f00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3948">
+      <stop
+         style="stop-color:#bf0000;stop-opacity:1;"
+         offset="0"
+         id="stop3950" />
+      <stop
+         style="stop-color:#3f0000;stop-opacity:1;"
+         offset="1"
+         id="stop3952" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3930">
+      <stop
+         id="stop3932"
+         offset="0"
+         style="stop-color:#ff0000;stop-opacity:1;" />
+      <stop
+         id="stop3934"
+         offset="1"
+         style="stop-color:#7f0000;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3910">
+      <stop
+         style="stop-color:#00ff00;stop-opacity:1;"
+         offset="0"
+         id="stop3912" />
+      <stop
+         style="stop-color:#007f00;stop-opacity:1;"
+         offset="1"
+         id="stop3914" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3910"
+       id="linearGradient3189"
+       x1="256"
+       y1="104"
+       x2="0"
+       y2="104"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3960"
+       id="linearGradient3214"
+       x1="256"
+       y1="104"
+       x2="0"
+       y2="104"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3930"
+       id="linearGradient3935"
+       gradientUnits="userSpaceOnUse"
+       x1="9"
+       y1="104"
+       x2="-247"
+       y2="104"
+       gradientTransform="matrix(-1,0,0,1,265,0)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3948"
+       id="linearGradient3939"
+       gradientUnits="userSpaceOnUse"
+       x1="99"
+       y1="104"
+       x2="-157"
+       y2="104"
+       gradientTransform="matrix(-1,0,0,1,355,0)" />
+    <filter
+       inkscape:collect="always"
+       id="filter3913">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.316"
+         id="feGaussianBlur3915" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.6064939"
+     inkscape:cx="247.84935"
+     inkscape:cy="27.806564"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:showpageshadow="false"
+     inkscape:snap-bbox="true"
+     gridtolerance="8"
+     inkscape:window-width="1280"
+     inkscape:window-height="961"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     guidecolor="#00007f"
+     guideopacity="0.49803922"
+     guidehicolor="#ff0000"
+     guidehiopacity="0.49803922">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2389"
+       visible="true"
+       enabled="true"
+       empspacing="4"
+       color="#003fff"
+       opacity="0.1254902"
+       empcolor="#007eff"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="128,0"
+       id="guide3941" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="256,0"
+       id="guide3897" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="384,0"
+       id="guide3943" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline;filter:url(#filter3913)">
+    <path
+       style="fill:url(#pattern3921);fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;opacity:0.75"
+       d="M 16,4 L 4,16 L 4,112 L 16,124 L 496,124 L 508,112 L 508,16 L 496,4 L 388,4 L 380,12 L 132,12 L 124,4 L 16,4 z M 112,92 L 244,92 L 252,100 L 260,100 L 268,92 L 400,92 L 408,100 L 500,100 L 500,108 L 492,116 L 268,116 L 260,108 L 252,108 L 244,116 L 20,116 L 12,108 L 12,100 L 104,100 L 112,92 z"
+       id="FrameBack"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccc"
+       inkscape:label="Frame" />
+    <path
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccc"
+       id="FrameBorder"
+       d="M 16,4 L 4,16 L 4,112 L 16,124 L 496,124 L 508,112 L 508,16 L 496,4 L 388,4 L 380,12 L 132,12 L 124,4 L 16,4 z M 112,92 L 244,92 L 252,100 L 260,100 L 268,92 L 400,92 L 408,100 L 500,100 L 500,108 L 492,116 L 268,116 L 260,108 L 252,108 L 244,116 L 20,116 L 12,108 L 12,100 L 104,100 L 112,92 z"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       inkscape:label="Frame" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="VotedYesBack"
+       d="M 106,104 L 114,96 L 242,96 L 250,104 L 242,112 L 16,112 L 12,108 L 12,104 L 106,104 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       inkscape:label="Voted" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 406,104 L 398,96 L 270,96 L 262,104 L 270,112 L 496,112 L 500,108 L 500,104 L 406,104 z"
+       id="VotedNoBack"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:label="Voted" />
+    <path
+       style="fill:url(#linearGradient3189);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="M 14,106 L 14,107 L 17,110 L 241,110 L 247,104 L 241,98 L 115,98 L 107,106 L 14,106 z"
+       id="VotedYesProg"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:label="Voted" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="VotedNoProg"
+       d="M 498,106 L 498,107 L 495,110 L 271,110 L 265,104 L 271,98 L 397,98 L 405,106 L 498,106 z"
+       style="fill:url(#linearGradient3935);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       inkscape:label="Voted" />
+    <path
+       style="fill:url(#linearGradient3214);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="M 117,99 L 122,104 L 117,109 L 125,109 L 130,104 L 125,99 L 117,99 z M 133,99 L 138,104 L 133,109 L 141,109 L 146,104 L 141,99 L 133,99 z M 149,99 L 154,104 L 149,109 L 157,109 L 162,104 L 157,99 L 149,99 z M 165,99 L 170,104 L 165,109 L 173,109 L 178,104 L 173,99 L 165,99 z M 181,99 L 186,104 L 181,109 L 189,109 L 194,104 L 189,99 L 181,99 z M 197,99 L 202,104 L 197,109 L 205,109 L 210,104 L 205,99 L 197,99 z M 213,99 L 218,104 L 213,109 L 221,109 L 226,104 L 221,99 L 213,99 z M 229,99 L 234,104 L 229,109 L 237,109 L 242,104 L 237,99 L 229,99 z"
+       id="VotedYesArrows"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+       inkscape:label="Voted" />
+    <path
+       id="VotedNoArrows"
+       d="M 395,99 L 390,104 L 395,109 L 387,109 L 382,104 L 387,99 L 395,99 z M 379,99 L 374,104 L 379,109 L 371,109 L 366,104 L 371,99 L 379,99 z M 363,99 L 358,104 L 363,109 L 355,109 L 350,104 L 355,99 L 363,99 z M 347,99 L 342,104 L 347,109 L 339,109 L 334,104 L 339,99 L 347,99 z M 331,99 L 326,104 L 331,109 L 323,109 L 318,104 L 323,99 L 331,99 z M 315,99 L 310,104 L 315,109 L 307,109 L 302,104 L 307,99 L 315,99 z M 299,99 L 294,104 L 299,109 L 291,109 L 286,104 L 291,99 L 299,99 z M 283,99 L 278,104 L 283,109 L 275,109 L 270,104 L 275,99 L 283,99 z"
+       style="fill:url(#linearGradient3939);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+       inkscape:label="Voted" />
+    <path
+       style="fill:#00bf00;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 102,96 L 110,88 L 240,88 L 232,80 L 208,80 L 208,84 L 104,84 L 92,96 L 102,96 z"
+       id="VotedYes"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:label="Voted" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="VotedNo"
+       d="M 410,96 L 402,88 L 272,88 L 280,80 L 304,80 L 304,84 L 408,84 L 420,96 L 410,96 z"
+       style="fill:#bf0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       inkscape:label="Voted" />
+  </g>
+</svg>



More information about the nexuiz-commits mailing list