diff options
author | 2020-10-09 02:52:49 +1100 | |
---|---|---|
committer | 2020-10-09 02:52:49 +1100 | |
commit | 740011e4d1db8a9468f917ef518e1e7a1c95cde1 (patch) | |
tree | cb9d82e642005bbb68e8637cdf24d5dc7bcee25b /src | |
parent | 7fc54760e16341bd1f13fa63663e2cb0a56cb035 (diff) |
Allow layout files to embed image data.
Also improved symmetry of disk components, fixed positioning of
components when fitting to the pixel grid, and fixed inherited color
when item has no color specified.
Removed the dotmatrix components from complay.py - there are more
flexible ways to achieve the same thing.
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/rendlay.cpp | 199 | ||||
-rw-r--r-- | src/mame/layout/brkball.lay | 13 | ||||
-rw-r--r-- | src/mame/layout/esq2by16.lay | 136 | ||||
-rw-r--r-- | src/mame/layout/hp9825.lay | 42 | ||||
-rw-r--r-- | src/mame/layout/sc2_dmd.lay | 12 | ||||
-rw-r--r-- | src/mame/layout/sc2copcl7.lay | 12 | ||||
-rw-r--r-- | src/mame/layout/sc2cpe.lay | 12 | ||||
-rw-r--r-- | src/mame/layout/sc2prem2.lay | 12 | ||||
-rw-r--r-- | src/mame/layout/sc2prom.lay | 12 | ||||
-rw-r--r-- | src/mame/layout/sc2ptytm1.lay | 12 | ||||
-rw-r--r-- | src/mame/layout/sc2town2.lay | 12 | ||||
-rw-r--r-- | src/mame/layout/sc4_dmd.lay | 11 | ||||
-rw-r--r-- | src/mame/layout/tecnbras.lay | 348 | ||||
-rw-r--r-- | src/mame/layout/tmtennis.lay | 66 |
14 files changed, 420 insertions, 479 deletions
diff --git a/src/emu/rendlay.cpp b/src/emu/rendlay.cpp index 2f57c7ade1d..25604722212 100644 --- a/src/emu/rendlay.cpp +++ b/src/emu/rendlay.cpp @@ -1521,14 +1521,14 @@ void layout_element::element_scale(bitmap_argb32 &dest, bitmap_argb32 &source, c // get the local scaled bounds render_bounds const compbounds(curcomp->bounds(elemtex.m_state)); rectangle bounds( - render_round_nearest(compbounds.x0 * dest.width()), - render_round_nearest(compbounds.x1 * dest.width()), - render_round_nearest(compbounds.y0 * dest.height()), - render_round_nearest(compbounds.y1 * dest.height())); - bounds &= dest.cliprect(); + s32(compbounds.x0 * float(dest.width()) + 0.5F), + s32(floorf(compbounds.x1 * float(dest.width()) - 0.5F)), + s32(compbounds.y0 * float(dest.height()) + 0.5F), + s32(floorf(compbounds.y1 * float(dest.height()) - 0.5F))); // based on the component type, add to the texture - curcomp->draw(elemtex.m_element->machine(), dest, bounds, elemtex.m_state); + if (!bounds.empty()) + curcomp->draw(elemtex.m_element->machine(), dest, bounds, elemtex.m_state); } } } @@ -1684,44 +1684,29 @@ private: void load_image(running_machine &machine) { - // attempt to open the file - LOGMASKED(LOG_IMAGE_LOAD, "Image component attempt to load image file '%s%s%s'\n", m_dirname, PATH_SEPARATOR, m_imagefile); + // if we have a filename, go with that emu_file file(machine.options().art_path(), OPEN_FLAG_READ); - osd_file::error const imgerr = file.open(m_dirname.empty() ? m_imagefile : (m_dirname + PATH_SEPARATOR + m_imagefile)); - if (osd_file::error::NONE == imgerr) + if (!m_imagefile.empty()) { - ru_imgformat const format = render_detect_image(file); - switch (format) + LOGMASKED(LOG_IMAGE_LOAD, "Image component attempt to load image file '%s%s%s'\n", m_dirname, PATH_SEPARATOR, m_imagefile); + osd_file::error const imgerr = file.open(m_dirname.empty() ? m_imagefile : (m_dirname + PATH_SEPARATOR + m_imagefile)); + if (osd_file::error::NONE == imgerr) { - case RENDUTIL_IMGFORMAT_ERROR: - LOGMASKED(LOG_IMAGE_LOAD, "Image component error detecting image file format\n"); - break; - - case RENDUTIL_IMGFORMAT_PNG: - LOGMASKED(LOG_IMAGE_LOAD, "Image component detected PNG file format\n"); - m_hasalpha = render_load_png(m_bitmap, file); - break; - - case RENDUTIL_IMGFORMAT_JPEG: - LOGMASKED(LOG_IMAGE_LOAD, "Image component detected JPEG file format\n"); - render_load_jpeg(m_bitmap, file); - break; - - case RENDUTIL_IMGFORMAT_MSDIB: - LOGMASKED(LOG_IMAGE_LOAD, "Image component detected Microsoft DIB file format\n"); - render_load_msdib(m_bitmap, file); - break; - - default: - LOGMASKED(LOG_IMAGE_LOAD, "Image component failed to detect image file format, trying SVG\n"); - load_svg(file); - break; + if (!load_bitmap(file)) + { + LOGMASKED(LOG_IMAGE_LOAD, "Image component will attempt to parse file as SVG\n"); + load_svg(file); + } + file.close(); + } + else + { + LOGMASKED(LOG_IMAGE_LOAD, "Image component unable to open image file '%s%s%s'\n", m_dirname, PATH_SEPARATOR, m_imagefile); } - file.close(); } else { - LOGMASKED(LOG_IMAGE_LOAD, "Image component unable to open image file '%s%s%s'\n", m_dirname, PATH_SEPARATOR, m_imagefile); + load_image_data(); } // load the alpha bitmap if specified @@ -1775,13 +1760,104 @@ private: m_data.clear(); } - void load_svg(util::core_file &file) + void load_image_data() { - if (!m_rasterizer) + // in-place Base64 decode + static constexpr char base64chars[] = + "\t\n\v\f\r +/0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz"; + static constexpr char base64tail[] = + "\t\n\v\f\r ="; + std::string::size_type const tail(m_data.find_first_not_of(base64chars)); + std::string::size_type const end(m_data.find_first_not_of(base64tail, tail)); + if (std::string::npos == end) { - osd_printf_warning("No SVG rasteriser available, won't attempt to parse component image '%s' as SVG\n", m_imagefile); - return; + LOGMASKED(LOG_IMAGE_LOAD, "Image component decoding Base64 image m_data\n"); + char *dst(&m_data[0]); + unsigned trailing(0U); + for (std::string::size_type i = 0U; (m_data.size() > i) && ('=' != m_data[i]); ++i) + { + u8 sym; + if (('A' <= m_data[i]) && ('Z' >= m_data[i])) + sym = m_data[i] - 'A'; + else if (('a' <= m_data[i]) && ('z' >= m_data[i])) + sym = m_data[i] - 'a' + 26; + else if (('0' <= m_data[i]) && ('9' >= m_data[i])) + sym = m_data[i] - '0' + 52; + else if ('+' == m_data[i]) + sym = 62; + else if ('/' == m_data[i]) + sym = 63; + else + continue; + if (trailing) + *dst |= (sym << 2) >> trailing; + else + *dst = sym << 2; + if (trailing >= 2U) + ++dst; + trailing = (trailing + 6U) & 7U; + if (trailing) + *dst = sym << (8U - trailing); + } + m_data.resize(dst - &m_data[0]); } + + // make a file wrapper for the data and see if it looks like a bitmap + util::core_file::ptr file; + osd_file::error const filerr(util::core_file::open_ram(m_data.c_str(), m_data.size(), OPEN_FLAG_READ, file)); + bool const bitmapdata((osd_file::error::NONE == filerr) && file && load_bitmap(*file)); + file.reset(); + + // if it didn't look like a bitmap, see if it looks like it might be XML and hence SVG + if (!bitmapdata) + { + bool const utf16be((0xfe == u8(m_data[0])) && (0xff == u8(m_data[1]))); + bool const utf16le((0xff == u8(m_data[0])) && (0xfe == u8(m_data[1]))); + bool const utf8((0xef == u8(m_data[0])) && (0xbb == u8(m_data[1])) && (0xbf == u8(m_data[2]))); + std::string::size_type const found(m_data.find_first_not_of("\t\n\v\f\r ")); + bool const xmltag((std::string::npos != found) && ('<' == m_data[found])); + if (utf16be || utf16le || utf8 || xmltag) + { + LOGMASKED(LOG_IMAGE_LOAD, "Image component will attempt to parse data as SVG\n"); + parse_svg(&m_data[0]); + } + } + } + + bool load_bitmap(util::core_file &file) + { + ru_imgformat const format = render_detect_image(file); + switch (format) + { + case RENDUTIL_IMGFORMAT_ERROR: + LOGMASKED(LOG_IMAGE_LOAD, "Image component error detecting image file format\n"); + return false; + + case RENDUTIL_IMGFORMAT_PNG: + LOGMASKED(LOG_IMAGE_LOAD, "Image component detected PNG file format\n"); + m_hasalpha = render_load_png(m_bitmap, file); + return true; + + case RENDUTIL_IMGFORMAT_JPEG: + LOGMASKED(LOG_IMAGE_LOAD, "Image component detected JPEG file format\n"); + render_load_jpeg(m_bitmap, file); + return true; + + case RENDUTIL_IMGFORMAT_MSDIB: + LOGMASKED(LOG_IMAGE_LOAD, "Image component detected Microsoft DIB file format\n"); + render_load_msdib(m_bitmap, file); + return true; + + default: + LOGMASKED(LOG_IMAGE_LOAD, "Image component failed to detect bitmap file format\n"); + return false; + } + } + + void load_svg(util::core_file &file) + { u64 len(file.size()); if ((std::numeric_limits<size_t>::max() - 1) < len) { @@ -1807,8 +1883,17 @@ private: ptr += read; len -= read; } - m_svg.reset(nsvgParse(svgbuf.get(), "px", 72)); - svgbuf.reset(); + parse_svg(svgbuf.get()); + } + + void parse_svg(char *svgdata) + { + if (!m_rasterizer) + { + osd_printf_warning("No SVG rasteriser available, won't attempt to parse component image '%s' as SVG\n", m_imagefile); + return; + } + m_svg.reset(nsvgParse(svgdata, "px", 72)); if (!m_svg) { osd_printf_warning("Failed to parse component image '%s' as SVG\n", m_imagefile); @@ -1922,8 +2007,8 @@ protected: u32 const inva(255 - a); // find the center - float const xcenter = float(bounds.xcenter()); - float const ycenter = float(bounds.ycenter()); + float const xcenter = float(bounds.left() + bounds.right()) * 0.5F; + float const ycenter = float(bounds.top() + bounds.bottom()) * 0.5F; float const xradius = float(bounds.width()) * 0.5F; float const yradius = float(bounds.height()) * 0.5F; float const ooyradius2 = 1.0F / (yradius * yradius); @@ -1932,22 +2017,21 @@ protected: for (u32 y = bounds.top(); y <= bounds.bottom(); ++y) { // compute left/right coordinates - float const ycoord = ycenter - (float(y) + 0.5F); + float const ycoord = ycenter - float(y); float const xval = xradius * sqrtf(1.0F - (ycoord * ycoord) * ooyradius2); - s32 const left = s32(xcenter - xval + 0.5F); - s32 const right = s32(xcenter + xval + 0.5F); + s32 const right = bounds.right() - left + bounds.left(); // draw this scanline if (255 <= a) { // optimise opaque pixels - std::fill_n(&dest.pix(y, left), right - left, f); + std::fill_n(&dest.pix(y, left), right - left + 1, f); } else if (a) { - u32 *dst(&dest.pix(y, bounds.left())); - for (u32 x = left; x < right; ++x, ++dst) + u32 *dst(&dest.pix(y, left)); + for (s32 x = left; x <= right; ++x, ++dst) { // we're translucent, add in the destination pixel contribution rgb_t const dpix(*dst); @@ -4354,9 +4438,16 @@ layout_view::item::color_vector layout_view::item::make_color( itemnode.get_name())); } } - for (emu::render::detail::color_step &step : result) - step.color *= mult; - set_color_deltas(result); + if (result.empty()) + { + result.emplace_back(emu::render::detail::color_step{ 0, mult, { 0.0F, 0.0F, 0.0F, 0.0F } }); + } + else + { + for (emu::render::detail::color_step &step : result) + step.color *= mult; + set_color_deltas(result); + } return result; } diff --git a/src/mame/layout/brkball.lay b/src/mame/layout/brkball.lay index 809b5901cf2..e895f502a65 100644 --- a/src/mame/layout/brkball.lay +++ b/src/mame/layout/brkball.lay @@ -7,10 +7,16 @@ </element> <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0.12" blue="0.12" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="1.0" blue="1.0" /> + <color state="0" red="0.125" green="0.125" blue="0.125" /> + </disk> </element> + <group name="dmd"> <repeat count="21"> <param name="s" start="0" increment="65" /> @@ -20,6 +26,7 @@ <param name="x" start="0" increment="1" /> <element name="dotmatrix~n~" ref="dotmatrixdot" state="0"> <bounds x="~x~" y="~y~" width="1" height="1" /> + <color red="1.0" green="0.12" blue="0.12" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/esq2by16.lay b/src/mame/layout/esq2by16.lay index aa05f652938..546803dc527 100644 --- a/src/mame/layout/esq2by16.lay +++ b/src/mame/layout/esq2by16.lay @@ -32,30 +32,64 @@ license:CC0 </rect> </element> - - <element name="Page1"> - <dotmatrix5dot> - <color red="0.0" green="1.0" blue="1.0" /> - </dotmatrix5dot> - </element> - - <element name="Page2"> - <dotmatrix5dot> - <color red="0.0" green="1.0" blue="0.0" /> - </dotmatrix5dot> - </element> - - <element name="Page3"> - <dotmatrix5dot> - <color red="1.0" green="1.0" blue="0.0" /> - </dotmatrix5dot> + <element name="dotrow"> + <rect> + <bounds x="-0.1" width="5.6" y="-0.1" height="1.2" /> + <color red="0.0" green="0.0" blue="0.0" /> + </rect> + <disk state="0" statemask="0x01"> + <bounds x="0.0" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk state="0" statemask="0x02"> + <bounds x="1.1" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk state="0" statemask="0x04"> + <bounds x="2.2" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk state="0" statemask="0x08"> + <bounds x="3.3" /> + <color red="0.125" green="0.125" blue="0.125" /></disk> + <disk state="0" statemask="0x10"> + <bounds x="4.4" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk statemask="0x01"> + <bounds x="0.0" /> + </disk> + <disk statemask="0x02"> + <bounds x="1.1" /> + </disk> + <disk statemask="0x04"> + <bounds x="2.2" /> + </disk> + <disk statemask="0x08"> + <bounds x="3.3" /> + </disk> + <disk statemask="0x10"> + <bounds x="4.4" /> + </disk> </element> - <element name="Page4"> - <dotmatrix5dot> - <color red="0.0" green="0.0" blue="1.0" /> - </dotmatrix5dot> - </element> + <group name="page"> + <repeat count="2"> + <param name="origin" start="~start~" increment="112" /> + <param name="row" start="0" increment="10" /> + <repeat count="16"> + <param name="char" start="~origin~" increment="7" /> + <param name="x" start="0" increment="6" /> + <repeat count="7"> + <param name="n" start="~char~" increment="1" /> + <param name="y" start="~row~" increment="1" /> + <element name="pg_~n~" ref="dotrow" state="0"> + <bounds x="~x~" y="~y~" width="5" height="1" /> + </element> + </repeat> + </repeat> + </repeat> + </group> <view name="Default Layout"> <!-- Background --> @@ -81,41 +115,29 @@ license:CC0 <element name="rLed_14" ref="rLeds"> <bounds x="280" y="20" width="5" height="3" /> </element> <element name="rLed_15" ref="rLeds"> <bounds x="290" y="20" width="5" height="3" /> </element> - <repeat count="3"> - <param name="page" start="3" increment="-1" /> - <param name="start" start="3000" increment="-1000" /> - <param name="baseline" start="0" increment="20" /> - <repeat count="2"> - <param name="origin" start="~start~" increment="112" /> - <param name="row" start="~baseline~" increment="10" /> - <repeat count="16"> - <param name="char" start="~origin~" increment="7" /> - <param name="x" start="0" increment="6" /> - <repeat count="7"> - <param name="n" start="~char~" increment="1" /> - <param name="y" start="~row~" increment="1" /> - <element name="pg_~n~" ref="Page~page~" state="0"> - <bounds x="~x~" y="~y~" width="5" height="1" /> - </element> - </repeat> - </repeat> - </repeat> - </repeat> - <repeat count="2"> - <param name="origin" start="4000" increment="112" /> - <param name="row" start="80" increment="10" /> - <repeat count="16"> - <param name="char" start="~origin~" increment="7" /> - <param name="x" start="0" increment="6" /> - <repeat count="7"> - <param name="n" start="~char~" increment="1" /> - <param name="y" start="~row~" increment="1" /> - <element name="pg_~n~" ref="Page4" state="0"> - <bounds x="~x~" y="~y~" width="5" height="1" /> - </element> - </repeat> - </repeat> - </repeat> + <param name="start" value="3000" /> + <group ref="page"> + <bounds x="0" y="0" width="95" height="17" /> + <color red="1.0" green="1.0" blue="0.0" /> + </group> + + <param name="start" value="2000" /> + <group ref="page"> + <bounds x="0" y="20" width="95" height="17" /> + <color red="0.0" green="1.0" blue="0.0" /> + </group> + + <param name="start" value="1000" /> + <group ref="page"> + <bounds x="0" y="40" width="95" height="17" /> + <color red="0.0" green="1.0" blue="1.0" /> + </group> + + <param name="start" value="4000" /> + <group ref="page"> + <bounds x="0" y="80" width="95" height="17" /> + <color red="0.0" green="0.0" blue="1.0" /> + </group> </view> </mamelayout> diff --git a/src/mame/layout/hp9825.lay b/src/mame/layout/hp9825.lay index 98341bd0bff..78db4e34edf 100644 --- a/src/mame/layout/hp9825.lay +++ b/src/mame/layout/hp9825.lay @@ -6,9 +6,44 @@ Hewlett-Packard 9825 Layout --> <mamelayout version="2"> <element name="dotmatrix5dot"> - <dotmatrix5dot> - <color red="1.0" green="0" blue="0" /> - </dotmatrix5dot> + <rect> + <bounds x="-0.1" width="5.6" y="-0.1" height="1.2" /> + <color red="0.0" green="0.0" blue="0.0" /> + </rect> + <disk state="0" statemask="0x01"> + <bounds x="0.0" /> + <color red="0.25" green="0.25" blue="0.25" /> + </disk> + <disk state="0" statemask="0x02"> + <bounds x="1.1" /> + <color red="0.25" green="0.25" blue="0.25" /> + </disk> + <disk state="0" statemask="0x04"> + <bounds x="2.2" /> + <color red="0.25" green="0.25" blue="0.25" /> + </disk> + <disk state="0" statemask="0x08"> + <bounds x="3.3" /> + <color red="0.25" green="0.25" blue="0.25" /></disk> + <disk state="0" statemask="0x10"> + <bounds x="4.4" /> + <color red="0.25" green="0.25" blue="0.25" /> + </disk> + <disk statemask="0x01"> + <bounds x="0.0" /> + </disk> + <disk statemask="0x02"> + <bounds x="1.1" /> + </disk> + <disk statemask="0x04"> + <bounds x="2.2" /> + </disk> + <disk statemask="0x08"> + <bounds x="3.3" /> + </disk> + <disk statemask="0x10"> + <bounds x="4.4" /> + </disk> </element> <element name="run_light" defstate="0"> @@ -34,6 +69,7 @@ Hewlett-Packard 9825 Layout <param name="rowidx" start="0" increment="1" /> <element name="char_~digitidx~_~rowidx~" ref="dotmatrix5dot" state="0"> <bounds x="~digit_x~" y="~rowidx~" width="5" height="1" /> + <color red="1.0" green="0.0" blue="0.0" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/sc2_dmd.lay b/src/mame/layout/sc2_dmd.lay index 0d3b9b1f41e..75f1c28825b 100644 --- a/src/mame/layout/sc2_dmd.lay +++ b/src/mame/layout/sc2_dmd.lay @@ -18,9 +18,14 @@ license:CC0 </rect> </element> <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0.12" blue="0.12" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="1.0" blue="1.0" /> + <color state="0" red="0.125" green="0.125" blue="0.125" /> + </disk> </element> <element name="Steppers" defstate="0"> <simplecounter maxstate="999" digits="3"> @@ -38,6 +43,7 @@ license:CC0 <param name="x" start="0" increment="1" /> <element name="dotmatrix~n~" ref="dotmatrixdot" state="0"> <bounds x="~x~" y="~y~" width="1" height="1" /> + <color red="1.0" green="0.12" blue="0.12" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/sc2copcl7.lay b/src/mame/layout/sc2copcl7.lay index d8588a2a311..32e8a52e26d 100644 --- a/src/mame/layout/sc2copcl7.lay +++ b/src/mame/layout/sc2copcl7.lay @@ -2099,9 +2099,14 @@ </element> <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0.12" blue="0.12" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="1.0" blue="1.0" /> + <color state="0" red="0.125" green="0.125" blue="0.125" /> + </disk> </element> <group name="dmd"> <repeat count="21"> @@ -2112,6 +2117,7 @@ <param name="x" start="0" increment="1" /> <element name="dotmatrix~n~" ref="dotmatrixdot" state="0"> <bounds x="~x~" y="~y~" width="1" height="1" /> + <color red="1.0" green="0.12" blue="0.12" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/sc2cpe.lay b/src/mame/layout/sc2cpe.lay index d52439a3590..eceb3fd15c8 100644 --- a/src/mame/layout/sc2cpe.lay +++ b/src/mame/layout/sc2cpe.lay @@ -2125,9 +2125,14 @@ </element> <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0.12" blue="0.12" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="1.0" blue="1.0" /> + <color state="0" red="0.125" green="0.125" blue="0.125" /> + </disk> </element> <group name="dmd"> <repeat count="21"> @@ -2138,6 +2143,7 @@ <param name="x" start="0" increment="1" /> <element name="dotmatrix~n~" ref="dotmatrixdot" state="0"> <bounds x="~x~" y="~y~" width="1" height="1" /> + <color red="1.0" green="0.12" blue="0.12" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/sc2prem2.lay b/src/mame/layout/sc2prem2.lay index 71b79ae888a..d376251548e 100644 --- a/src/mame/layout/sc2prem2.lay +++ b/src/mame/layout/sc2prem2.lay @@ -2185,9 +2185,14 @@ </element> <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0.12" blue="0.12" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="1.0" blue="1.0" /> + <color state="0" red="0.125" green="0.125" blue="0.125" /> + </disk> </element> <group name="dmd"> <repeat count="21"> @@ -2198,6 +2203,7 @@ <param name="x" start="0" increment="1" /> <element name="dotmatrix~n~" ref="dotmatrixdot" state="0"> <bounds x="~x~" y="~y~" width="1" height="1" /> + <color red="1.0" green="0.12" blue="0.12" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/sc2prom.lay b/src/mame/layout/sc2prom.lay index 63c9b8d1679..369aef18a6e 100644 --- a/src/mame/layout/sc2prom.lay +++ b/src/mame/layout/sc2prom.lay @@ -1609,9 +1609,14 @@ </element> <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0.12" blue="0.12" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="1.0" blue="1.0" /> + <color state="0" red="0.125" green="0.125" blue="0.125" /> + </disk> </element> <group name="dmd"> <repeat count="21"> @@ -1622,6 +1627,7 @@ <param name="x" start="0" increment="1" /> <element name="dotmatrix~n~" ref="dotmatrixdot" state="0"> <bounds x="~x~" y="~y~" width="1" height="1" /> + <color red="1.0" green="0.12" blue="0.12" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/sc2ptytm1.lay b/src/mame/layout/sc2ptytm1.lay index 1cde0618a3b..3b39ac670ba 100644 --- a/src/mame/layout/sc2ptytm1.lay +++ b/src/mame/layout/sc2ptytm1.lay @@ -1153,9 +1153,14 @@ </element> <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0.12" blue="0.12" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="1.0" blue="1.0" /> + <color state="0" red="0.125" green="0.125" blue="0.125" /> + </disk> </element> <group name="dmd"> <repeat count="21"> @@ -1166,6 +1171,7 @@ <param name="x" start="0" increment="1" /> <element name="dotmatrix~n~" ref="dotmatrixdot" state="0"> <bounds x="~x~" y="~y~" width="1" height="1" /> + <color red="1.0" green="0.12" blue="0.12" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/sc2town2.lay b/src/mame/layout/sc2town2.lay index d0595ea60ea..14c06cd4514 100644 --- a/src/mame/layout/sc2town2.lay +++ b/src/mame/layout/sc2town2.lay @@ -1887,9 +1887,14 @@ </element> <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0.12" blue="0.12" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="1.0" blue="1.0" /> + <color state="0" red="0.125" green="0.125" blue="0.125" /> + </disk> </element> <group name="dmd"> <repeat count="21"> @@ -1900,6 +1905,7 @@ <param name="x" start="0" increment="1" /> <element name="dotmatrix~n~" ref="dotmatrixdot" state="0"> <bounds x="~x~" y="~y~" width="1" height="1" /> + <color red="1.0" green="0.12" blue="0.12" /> </element> </repeat> </repeat> diff --git a/src/mame/layout/sc4_dmd.lay b/src/mame/layout/sc4_dmd.lay index b42cda68acd..6d965bdb4ea 100644 --- a/src/mame/layout/sc4_dmd.lay +++ b/src/mame/layout/sc4_dmd.lay @@ -87,9 +87,14 @@ license:CC0 <element name="dotmatrixdot"> - <dotmatrixdot> - <color red="1.0" green="0" blue="0" /> - </dotmatrixdot> + <rect> + <color red="0" green="0" blue="0" /> + <bounds left="-0.1" top="-0.1" right="1.1" bottom="1.1" /> + </rect> + <disk> + <color state="1" red="1.0" green="0.0" blue="0.0" /> + <color state="0" red="0.125" green="0.0" blue="0.0" /> + </disk> </element> <element name="digit" defstate="10"> <led7seg> diff --git a/src/mame/layout/tecnbras.lay b/src/mame/layout/tecnbras.lay index c65cea29235..da18525567f 100644 --- a/src/mame/layout/tecnbras.lay +++ b/src/mame/layout/tecnbras.lay @@ -4,9 +4,45 @@ license:CC0 --> <mamelayout version="2"> <element name="dotmatrix5dot"> - <dotmatrix5dot> - <color red="1.0" green="0" blue="0" /> - </dotmatrix5dot> + <rect> + <bounds x="-0.1" width="5.6" y="-0.1" height="1.2" /> + <color red="0.0" green="0.0" blue="0.0" /> + </rect> + <disk state="0" statemask="0x01"> + <bounds x="0.0" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk state="0" statemask="0x02"> + <bounds x="1.1" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk state="0" statemask="0x04"> + <bounds x="2.2" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk state="0" statemask="0x08"> + <bounds x="3.3" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk state="0" statemask="0x10"> + <bounds x="4.4" /> + <color red="0.125" green="0.125" blue="0.125" /> + </disk> + <disk statemask="0x01"> + <bounds x="0.0" /> + </disk> + <disk statemask="0x02"> + <bounds x="1.1" /> + </disk> + <disk statemask="0x04"> + <bounds x="2.2" /> + </disk> + <disk statemask="0x08"> + <bounds x="3.3" /> + </disk> + <disk statemask="0x10"> + <bounds x="4.4" /> + </disk> </element> <element name="background"> <rect> @@ -18,299 +54,17 @@ license:CC0 <element ref="background"> <bounds left="00" top="00" right="70" bottom="7" /> </element> - <element name="dmd_0" ref="dotmatrix5dot" state="0"> - <bounds x="0" y="0" width="5" height="1" /> - </element> - <element name="dmd_1" ref="dotmatrix5dot" state="0"> - <bounds x="0" y="1" width="5" height="1" /> - </element> - <element name="dmd_2" ref="dotmatrix5dot" state="0"> - <bounds x="0" y="2" width="5" height="1" /> - </element> - <element name="dmd_3" ref="dotmatrix5dot" state="0"> - <bounds x="0" y="3" width="5" height="1" /> - </element> - <element name="dmd_4" ref="dotmatrix5dot" state="0"> - <bounds x="0" y="4" width="5" height="1" /> - </element> - <element name="dmd_5" ref="dotmatrix5dot" state="0"> - <bounds x="0" y="5" width="5" height="1" /> - </element> - <element name="dmd_6" ref="dotmatrix5dot" state="0"> - <bounds x="0" y="6" width="5" height="1" /> - </element> - <element name="dmd_7" ref="dotmatrix5dot" state="0"> - <bounds x="5" y="0" width="5" height="1" /> - </element> - <element name="dmd_8" ref="dotmatrix5dot" state="0"> - <bounds x="5" y="1" width="5" height="1" /> - </element> - <element name="dmd_9" ref="dotmatrix5dot" state="0"> - <bounds x="5" y="2" width="5" height="1" /> - </element> - <element name="dmd_10" ref="dotmatrix5dot" state="0"> - <bounds x="5" y="3" width="5" height="1" /> - </element> - <element name="dmd_11" ref="dotmatrix5dot" state="0"> - <bounds x="5" y="4" width="5" height="1" /> - </element> - <element name="dmd_12" ref="dotmatrix5dot" state="0"> - <bounds x="5" y="5" width="5" height="1" /> - </element> - <element name="dmd_13" ref="dotmatrix5dot" state="0"> - <bounds x="5" y="6" width="5" height="1" /> - </element> - <element name="dmd_14" ref="dotmatrix5dot" state="0"> - <bounds x="10" y="0" width="5" height="1" /> - </element> - <element name="dmd_15" ref="dotmatrix5dot" state="0"> - <bounds x="10" y="1" width="5" height="1" /> - </element> - <element name="dmd_16" ref="dotmatrix5dot" state="0"> - <bounds x="10" y="2" width="5" height="1" /> - </element> - <element name="dmd_17" ref="dotmatrix5dot" state="0"> - <bounds x="10" y="3" width="5" height="1" /> - </element> - <element name="dmd_18" ref="dotmatrix5dot" state="0"> - <bounds x="10" y="4" width="5" height="1" /> - </element> - <element name="dmd_19" ref="dotmatrix5dot" state="0"> - <bounds x="10" y="5" width="5" height="1" /> - </element> - <element name="dmd_20" ref="dotmatrix5dot" state="0"> - <bounds x="10" y="6" width="5" height="1" /> - </element> - <element name="dmd_21" ref="dotmatrix5dot" state="0"> - <bounds x="15" y="0" width="5" height="1" /> - </element> - <element name="dmd_22" ref="dotmatrix5dot" state="0"> - <bounds x="15" y="1" width="5" height="1" /> - </element> - <element name="dmd_23" ref="dotmatrix5dot" state="0"> - <bounds x="15" y="2" width="5" height="1" /> - </element> - <element name="dmd_24" ref="dotmatrix5dot" state="0"> - <bounds x="15" y="3" width="5" height="1" /> - </element> - <element name="dmd_25" ref="dotmatrix5dot" state="0"> - <bounds x="15" y="4" width="5" height="1" /> - </element> - <element name="dmd_26" ref="dotmatrix5dot" state="0"> - <bounds x="15" y="5" width="5" height="1" /> - </element> - <element name="dmd_27" ref="dotmatrix5dot" state="0"> - <bounds x="15" y="6" width="5" height="1" /> - </element> - <element name="dmd_28" ref="dotmatrix5dot" state="0"> - <bounds x="20" y="0" width="5" height="1" /> - </element> - <element name="dmd_29" ref="dotmatrix5dot" state="0"> - <bounds x="20" y="1" width="5" height="1" /> - </element> - <element name="dmd_30" ref="dotmatrix5dot" state="0"> - <bounds x="20" y="2" width="5" height="1" /> - </element> - <element name="dmd_31" ref="dotmatrix5dot" state="0"> - <bounds x="20" y="3" width="5" height="1" /> - </element> - <element name="dmd_32" ref="dotmatrix5dot" state="0"> - <bounds x="20" y="4" width="5" height="1" /> - </element> - <element name="dmd_33" ref="dotmatrix5dot" state="0"> - <bounds x="20" y="5" width="5" height="1" /> - </element> - <element name="dmd_34" ref="dotmatrix5dot" state="0"> - <bounds x="20" y="6" width="5" height="1" /> - </element> - <element name="dmd_35" ref="dotmatrix5dot" state="0"> - <bounds x="25" y="0" width="5" height="1" /> - </element> - <element name="dmd_36" ref="dotmatrix5dot" state="0"> - <bounds x="25" y="1" width="5" height="1" /> - </element> - <element name="dmd_37" ref="dotmatrix5dot" state="0"> - <bounds x="25" y="2" width="5" height="1" /> - </element> - <element name="dmd_38" ref="dotmatrix5dot" state="0"> - <bounds x="25" y="3" width="5" height="1" /> - </element> - <element name="dmd_39" ref="dotmatrix5dot" state="0"> - <bounds x="25" y="4" width="5" height="1" /> - </element> - <element name="dmd_40" ref="dotmatrix5dot" state="0"> - <bounds x="25" y="5" width="5" height="1" /> - </element> - <element name="dmd_41" ref="dotmatrix5dot" state="0"> - <bounds x="25" y="6" width="5" height="1" /> - </element> - <element name="dmd_42" ref="dotmatrix5dot" state="0"> - <bounds x="30" y="0" width="5" height="1" /> - </element> - <element name="dmd_43" ref="dotmatrix5dot" state="0"> - <bounds x="30" y="1" width="5" height="1" /> - </element> - <element name="dmd_44" ref="dotmatrix5dot" state="0"> - <bounds x="30" y="2" width="5" height="1" /> - </element> - <element name="dmd_45" ref="dotmatrix5dot" state="0"> - <bounds x="30" y="3" width="5" height="1" /> - </element> - <element name="dmd_46" ref="dotmatrix5dot" state="0"> - <bounds x="30" y="4" width="5" height="1" /> - </element> - <element name="dmd_47" ref="dotmatrix5dot" state="0"> - <bounds x="30" y="5" width="5" height="1" /> - </element> - <element name="dmd_48" ref="dotmatrix5dot" state="0"> - <bounds x="30" y="6" width="5" height="1" /> - </element> - <element name="dmd_49" ref="dotmatrix5dot" state="0"> - <bounds x="35" y="0" width="5" height="1" /> - </element> - <element name="dmd_50" ref="dotmatrix5dot" state="0"> - <bounds x="35" y="1" width="5" height="1" /> - </element> - <element name="dmd_51" ref="dotmatrix5dot" state="0"> - <bounds x="35" y="2" width="5" height="1" /> - </element> - <element name="dmd_52" ref="dotmatrix5dot" state="0"> - <bounds x="35" y="3" width="5" height="1" /> - </element> - <element name="dmd_53" ref="dotmatrix5dot" state="0"> - <bounds x="35" y="4" width="5" height="1" /> - </element> - <element name="dmd_54" ref="dotmatrix5dot" state="0"> - <bounds x="35" y="5" width="5" height="1" /> - </element> - <element name="dmd_55" ref="dotmatrix5dot" state="0"> - <bounds x="35" y="6" width="5" height="1" /> - </element> - <element name="dmd_56" ref="dotmatrix5dot" state="0"> - <bounds x="40" y="0" width="5" height="1" /> - </element> - <element name="dmd_57" ref="dotmatrix5dot" state="0"> - <bounds x="40" y="1" width="5" height="1" /> - </element> - <element name="dmd_58" ref="dotmatrix5dot" state="0"> - <bounds x="40" y="2" width="5" height="1" /> - </element> - <element name="dmd_59" ref="dotmatrix5dot" state="0"> - <bounds x="40" y="3" width="5" height="1" /> - </element> - <element name="dmd_60" ref="dotmatrix5dot" state="0"> - <bounds x="40" y="4" width="5" height="1" /> - </element> - <element name="dmd_61" ref="dotmatrix5dot" state="0"> - <bounds x="40" y="5" width="5" height="1" /> - </element> - <element name="dmd_62" ref="dotmatrix5dot" state="0"> - <bounds x="40" y="6" width="5" height="1" /> - </element> - <element name="dmd_63" ref="dotmatrix5dot" state="0"> - <bounds x="45" y="0" width="5" height="1" /> - </element> - <element name="dmd_64" ref="dotmatrix5dot" state="0"> - <bounds x="45" y="1" width="5" height="1" /> - </element> - <element name="dmd_65" ref="dotmatrix5dot" state="0"> - <bounds x="45" y="2" width="5" height="1" /> - </element> - <element name="dmd_66" ref="dotmatrix5dot" state="0"> - <bounds x="45" y="3" width="5" height="1" /> - </element> - <element name="dmd_67" ref="dotmatrix5dot" state="0"> - <bounds x="45" y="4" width="5" height="1" /> - </element> - <element name="dmd_68" ref="dotmatrix5dot" state="0"> - <bounds x="45" y="5" width="5" height="1" /> - </element> - <element name="dmd_69" ref="dotmatrix5dot" state="0"> - <bounds x="45" y="6" width="5" height="1" /> - </element> - <element name="dmd_70" ref="dotmatrix5dot" state="0"> - <bounds x="50" y="0" width="5" height="1" /> - </element> - <element name="dmd_71" ref="dotmatrix5dot" state="0"> - <bounds x="50" y="1" width="5" height="1" /> - </element> - <element name="dmd_72" ref="dotmatrix5dot" state="0"> - <bounds x="50" y="2" width="5" height="1" /> - </element> - <element name="dmd_73" ref="dotmatrix5dot" state="0"> - <bounds x="50" y="3" width="5" height="1" /> - </element> - <element name="dmd_74" ref="dotmatrix5dot" state="0"> - <bounds x="50" y="4" width="5" height="1" /> - </element> - <element name="dmd_75" ref="dotmatrix5dot" state="0"> - <bounds x="50" y="5" width="5" height="1" /> - </element> - <element name="dmd_76" ref="dotmatrix5dot" state="0"> - <bounds x="50" y="6" width="5" height="1" /> - </element> - <element name="dmd_77" ref="dotmatrix5dot" state="0"> - <bounds x="55" y="0" width="5" height="1" /> - </element> - <element name="dmd_78" ref="dotmatrix5dot" state="0"> - <bounds x="55" y="1" width="5" height="1" /> - </element> - <element name="dmd_79" ref="dotmatrix5dot" state="0"> - <bounds x="55" y="2" width="5" height="1" /> - </element> - <element name="dmd_80" ref="dotmatrix5dot" state="0"> - <bounds x="55" y="3" width="5" height="1" /> - </element> - <element name="dmd_81" ref="dotmatrix5dot" state="0"> - <bounds x="55" y="4" width="5" height="1" /> - </element> - <element name="dmd_82" ref="dotmatrix5dot" state="0"> - <bounds x="55" y="5" width="5" height="1" /> - </element> - <element name="dmd_83" ref="dotmatrix5dot" state="0"> - <bounds x="55" y="6" width="5" height="1" /> - </element> - <element name="dmd_84" ref="dotmatrix5dot" state="0"> - <bounds x="60" y="0" width="5" height="1" /> - </element> - <element name="dmd_85" ref="dotmatrix5dot" state="0"> - <bounds x="60" y="1" width="5" height="1" /> - </element> - <element name="dmd_86" ref="dotmatrix5dot" state="0"> - <bounds x="60" y="2" width="5" height="1" /> - </element> - <element name="dmd_87" ref="dotmatrix5dot" state="0"> - <bounds x="60" y="3" width="5" height="1" /> - </element> - <element name="dmd_88" ref="dotmatrix5dot" state="0"> - <bounds x="60" y="4" width="5" height="1" /> - </element> - <element name="dmd_89" ref="dotmatrix5dot" state="0"> - <bounds x="60" y="5" width="5" height="1" /> - </element> - <element name="dmd_90" ref="dotmatrix5dot" state="0"> - <bounds x="60" y="6" width="5" height="1" /> - </element> - <element name="dmd_91" ref="dotmatrix5dot" state="0"> - <bounds x="65" y="0" width="5" height="1" /> - </element> - <element name="dmd_92" ref="dotmatrix5dot" state="0"> - <bounds x="65" y="1" width="5" height="1" /> - </element> - <element name="dmd_93" ref="dotmatrix5dot" state="0"> - <bounds x="65" y="2" width="5" height="1" /> - </element> - <element name="dmd_94" ref="dotmatrix5dot" state="0"> - <bounds x="65" y="3" width="5" height="1" /> - </element> - <element name="dmd_95" ref="dotmatrix5dot" state="0"> - <bounds x="65" y="4" width="5" height="1" /> - </element> - <element name="dmd_96" ref="dotmatrix5dot" state="0"> - <bounds x="65" y="5" width="5" height="1" /> - </element> - <element name="dmd_97" ref="dotmatrix5dot" state="0"> - <bounds x="65" y="6" width="5" height="1" /> - </element> + <repeat count="14"> + <param name="char" start="0" increment="7" /> + <param name="x" start="0" increment="5" /> + <repeat count="7"> + <param name="n" start="~char~" increment="1" /> + <param name="y" start="0" increment="1" /> + <element name="dmd_~n~" ref="dotmatrix5dot" state="0"> + <bounds x="~x~" y="~y~" width="5" height="1" /> + <color red="1.0" green="0.0" blue="0.0" /> + </element> + </repeat> + </repeat> </view> </mamelayout> diff --git a/src/mame/layout/tmtennis.lay b/src/mame/layout/tmtennis.lay index db4e50b1aee..aa6a2b48e1a 100644 --- a/src/mame/layout/tmtennis.lay +++ b/src/mame/layout/tmtennis.lay @@ -6,54 +6,38 @@ license:CC0 <!-- define elements --> - <element name="green"><rect><color red="0" green="0.5" blue="0" /></rect></element> - <element name="greena"><rect><color red="0" green="1" blue="0" /></rect></element> - <element name="greend"><rect><color red="0" green="1" blue="0" /></rect></element> - + <element name="court"> + <image><data><![CDATA[ + <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="700" height="249" viewBox="0 0 700 249" version="1.1" id="svg1"> + <path id="path1" d="m 1.5,247.5 h 697 l -95,-208 h -507 z" + style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <path id="path2" d="M 88,58.5 H 612" + style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <path id="path3" d="M 12,224.5 H 688" + style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <path id="path4" d="m 138.5,224.5 47,-166" + style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <path id="path5" d="m 561.5,224.5 -47,-166" + style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <path id="path6" d="M 163,136.5 H 537" + style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <path id="path7" d="M 350,247.5 V 38.5" + style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" /> + <rect id="rect1" width="12" height="39" x="344" y="0" style="opacity:1;fill:#00ff00;fill-opacity:1;stroke:none" /> + <rect id="rect2" width="12" height="42" x="344" y="206" style="opacity:1;fill:#00ff00;fill-opacity:1;stroke:none" /> + </svg> + ]]></data></image> + </element> <!-- build screen --> <view name="Internal Layout"> - <screen index="0"><bounds x="10" y="10" width="64" height="13.9" /></screen> - - <!-- draw the tennis court --> - - <repeat count="201"> - <param name="x" start="6.9" increment="0.0475" /> - <param name="y" start="27" increment="-0.105" /> - <element ref="greend"><bounds x="~x~" y="~y~" width="0.35" height="0.35" /><color alpha="0.18" /></element> - </repeat> - - <repeat count="201"> - <param name="x" start="76.8" increment="-0.0475" /> - <param name="y" start="27" increment="-0.105" /> - <element ref="greend"><bounds x="~x~" y="~y~" width="0.35" height="0.35" /><color alpha="0.18" /></element> - </repeat> - <repeat count="159"> - <param name="x" start="20.7" increment="0.029" /> - <param name="y" start="24.7" increment="-0.105" /> - <element ref="greend"><bounds x="~x~" y="~y~" width="0.35" height="0.35" /><color alpha="0.18" /></element> - </repeat> + <screen index="0" blend="add"><bounds x="3" y="7.6" width="64" height="13.9" /></screen> - <repeat count="159"> - <param name="x" start="63" increment="-0.029" /> - <param name="y" start="24.7" increment="-0.105" /> - <element ref="greend"><bounds x="~x~" y="~y~" width="0.35" height="0.35" /><color alpha="0.18" /></element> - </repeat> - - <element ref="greena"><bounds x="41.85" y="6" width="0.3" height="20" /><color alpha="0.5" /></element> - - <element ref="green"><bounds x="16.5" y="6.1" width="51" height="0.3" /></element> - <element ref="green"><bounds x="15.7" y="8" width="52.6" height="0.3" /></element> - - <element ref="green"><bounds x="23.35" y="15.9" width="37.3" height="0.3" /></element> - - <element ref="green"><bounds x="8.1" y="24.8" width="67.8" height="0.3" /></element> - <element ref="green"><bounds x="7" y="27" width="70" height="0.3" /></element> + <!-- draw the tennis court --> - <element ref="green"><bounds x="41.4" y="2.3" width="1.2" height="3.9" /></element> - <element ref="green"><bounds x="41.4" y="23" width="1.2" height="4.2" /></element> + <element ref="court"><bounds width="70" height="24.9" /><color alpha="0.5" /></element> </view> </mamelayout> |