Initial import of Dillo
This commit is contained in:
5
test/Makefile.am
Normal file
5
test/Makefile.am
Normal file
@ -0,0 +1,5 @@
|
||||
SUBDIRS = unit dw
|
||||
|
||||
if ENABLE_HTML_TESTS
|
||||
SUBDIRS += html
|
||||
endif
|
||||
64
test/dw/Makefile.am
Normal file
64
test/dw/Makefile.am
Normal file
@ -0,0 +1,64 @@
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir) \
|
||||
-DCUR_WORKING_DIR='"@BASE_CUR_WORKING_DIR@/test"'
|
||||
|
||||
AM_CFLAGS = @LIBFLTK_CFLAGS@
|
||||
AM_CXXFLAGS = @LIBFLTK_CXXFLAGS@
|
||||
|
||||
LDADD = \
|
||||
$(top_builddir)/dw/libDw-widgets.a \
|
||||
$(top_builddir)/dw/libDw-fltk.a \
|
||||
$(top_builddir)/dw/libDw-core.a \
|
||||
$(top_builddir)/lout/liblout.a \
|
||||
$(top_builddir)/dlib/libDlib.a \
|
||||
@LIBFLTK_LIBS@ @LIBX11_LIBS@
|
||||
|
||||
check_PROGRAMS = \
|
||||
dw-anchors-test \
|
||||
dw-border-test \
|
||||
dw-example \
|
||||
dw-find-test \
|
||||
dw-float-test \
|
||||
dw-image-background \
|
||||
dw-images-scaled \
|
||||
dw-images-scaled2 \
|
||||
dw-images-simple \
|
||||
dw-imgbuf-mem-test \
|
||||
dw-links \
|
||||
dw-links2 \
|
||||
dw-lists \
|
||||
dw-resource-test \
|
||||
dw-simple-container-test \
|
||||
dw-table \
|
||||
dw-table-aligned \
|
||||
dw-ui-test
|
||||
|
||||
# Don't run most tests yet, as they require graphical display and human
|
||||
# intervention.
|
||||
TESTS = \
|
||||
dw-imgbuf-mem-test
|
||||
|
||||
dw_anchors_test_SOURCES = dw_anchors_test.cc
|
||||
dw_border_test_SOURCES = dw_border_test.cc
|
||||
dw_example_SOURCES = dw_example.cc
|
||||
dw_find_test_SOURCES = dw_find_test.cc
|
||||
dw_float_test_SOURCES = dw_float_test.cc
|
||||
dw_links_SOURCES = dw_links.cc
|
||||
dw_links2_SOURCES = dw_links2.cc
|
||||
dw_image_background_SOURCES = dw_image_background.cc
|
||||
dw_images_simple_SOURCES = dw_images_simple.cc
|
||||
dw_images_scaled_SOURCES = dw_images_scaled.cc
|
||||
dw_images_scaled2_SOURCES = dw_images_scaled2.cc
|
||||
dw_lists_SOURCES = dw_lists.cc
|
||||
dw_simple_container_test_SOURCES = \
|
||||
dw_simple_container.hh \
|
||||
dw_simple_container.cc \
|
||||
dw_simple_container_test.cc
|
||||
dw_table_aligned_SOURCES = dw_table_aligned.cc
|
||||
dw_table_SOURCES = dw_table.cc
|
||||
dw_imgbuf_mem_test_SOURCES = dw_imgbuf_mem_test.cc
|
||||
dw_resource_test_SOURCES = dw_resource_test.cc
|
||||
dw_ui_test_SOURCES = \
|
||||
dw_ui_test.cc \
|
||||
form.cc \
|
||||
form.hh
|
||||
166
test/dw/dw_anchors_test.cc
Normal file
166
test/dw/dw_anchors_test.cc
Normal file
@ -0,0 +1,166 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <ctype.h>
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl.H>
|
||||
|
||||
#include "dlib/dlib.h"
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
|
||||
using namespace lout::container::typed;
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
static FltkPlatform *platform;
|
||||
static Layout *layout;
|
||||
static Fl_Window *window;
|
||||
static FltkViewport *viewport;
|
||||
static Style *topWidgetStyle, *widgetStyle, *wordStyle, *headingStyle;
|
||||
static Textblock *topTextblock = NULL;
|
||||
static int textblockNo = 0;
|
||||
|
||||
static const char *numbers[10] = {
|
||||
"one", "two", "three", "four", "five",
|
||||
"six", "seven", "eight", "nine", "ten"
|
||||
};
|
||||
|
||||
static void anchorCallback (Fl_Widget *widget, void *data)
|
||||
{
|
||||
layout->setAnchor (numbers[(long)data]);
|
||||
}
|
||||
|
||||
static void textTimeout (void *data)
|
||||
{
|
||||
Textblock *oldTop = topTextblock;
|
||||
topTextblock = new Textblock (false);
|
||||
|
||||
if (oldTop) {
|
||||
oldTop->addLinebreak (wordStyle);
|
||||
oldTop->addWidget (topTextblock, widgetStyle);
|
||||
} else {
|
||||
topTextblock->setStyle (topWidgetStyle);
|
||||
layout->setWidget (topTextblock);
|
||||
}
|
||||
|
||||
topTextblock->addAnchor (numbers[textblockNo], headingStyle);
|
||||
|
||||
char buf[16];
|
||||
strcpy (buf, numbers[textblockNo]);
|
||||
buf[0] = lout::misc::AsciiToupper (buf[0]);
|
||||
topTextblock->addText (buf, headingStyle);
|
||||
topTextblock->addParbreak (5, headingStyle);
|
||||
|
||||
for (int i = 0; i < 30; i++) {
|
||||
strcpy (buf, numbers[textblockNo]);
|
||||
if (i == 0)
|
||||
buf[0] = lout::misc::AsciiToupper (buf[0]);
|
||||
strcat (buf, i == 29 ? "." : ",");
|
||||
|
||||
topTextblock->addText (buf, wordStyle);
|
||||
topTextblock->addSpace (wordStyle);
|
||||
}
|
||||
|
||||
topTextblock->flush ();
|
||||
|
||||
textblockNo++;
|
||||
if (textblockNo < 10)
|
||||
Fl::repeat_timeout (1, textTimeout, NULL);
|
||||
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char *buttonLabel[10];
|
||||
|
||||
platform = new FltkPlatform ();
|
||||
layout = new Layout (platform);
|
||||
|
||||
window = new Fl_Window(250, 200, "Dw Anchors Test");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
viewport = new FltkViewport (50, 0, 200, 200);
|
||||
viewport->end();
|
||||
layout->attachView (viewport);
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
char buf[16];
|
||||
strcpy (buf, numbers[i]);
|
||||
buf[0] = lout::misc::AsciiToupper (buf[0]);
|
||||
buttonLabel[i] = dStrdup(buf);
|
||||
Fl_Button *button = new Fl_Button(0, 20 * i, 50, 20, buttonLabel[i]);
|
||||
button->callback (anchorCallback, (void*)(long)i);
|
||||
button->when (FL_WHEN_RELEASE);
|
||||
}
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
styleAttrs.margin.setVal (5);
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
topWidgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.margin.left = 20;
|
||||
styleAttrs.margin.right = 0;
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.margin.left = 0;
|
||||
wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
fontAttrs.size = 28;
|
||||
fontAttrs.weight = 700;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
headingStyle = Style::create (&styleAttrs);
|
||||
|
||||
Fl::add_timeout (0, textTimeout, NULL);
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
|
||||
int errorCode = Fl::run();
|
||||
|
||||
topWidgetStyle->unref ();
|
||||
widgetStyle->unref ();
|
||||
wordStyle->unref ();
|
||||
headingStyle->unref ();
|
||||
for (int i = 0; i < 10; i++)
|
||||
free(buttonLabel[i]);
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
128
test/dw/dw_border_test.cc
Normal file
128
test/dw/dw_border_test.cc
Normal file
@ -0,0 +1,128 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
#include "dw/listitem.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(200, 300, "Dw Border Test");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 200, 300);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
styleAttrs.borderWidth.setVal (2);
|
||||
styleAttrs.setBorderColor (Color::create (layout, 0xffffff));
|
||||
styleAttrs.setBorderStyle (BORDER_INSET);
|
||||
styleAttrs.padding.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle1 = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffff80);
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.borderWidth.setVal (1);
|
||||
styleAttrs.setBorderColor (Color::create (layout, 0x4040ff));
|
||||
styleAttrs.setBorderStyle (BORDER_SOLID);
|
||||
styleAttrs.padding.setVal (1);
|
||||
|
||||
Style *widgetStyle2 = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock1 = new Textblock (false);
|
||||
textblock1->setStyle (widgetStyle1);
|
||||
layout->setWidget (textblock1);
|
||||
|
||||
widgetStyle1->unref();
|
||||
|
||||
styleAttrs.borderWidth.setVal (0);
|
||||
styleAttrs.padding.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.cursor = CURSOR_TEXT;
|
||||
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
const char *words1[] = { "Some", "random", "text.", NULL };
|
||||
const char *words2[] = { "A", "nested", "paragraph.", NULL };
|
||||
|
||||
for(int i = 0; words1[i]; i++) {
|
||||
if(i != 0)
|
||||
textblock1->addSpace (wordStyle);
|
||||
textblock1->addText (words1[i], wordStyle);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 1; i++) {
|
||||
textblock1->addParbreak(0, wordStyle);
|
||||
|
||||
Textblock *textblock2 = new Textblock (false);
|
||||
textblock1->addWidget (textblock2, widgetStyle2);
|
||||
|
||||
for(int j = 0; words2[j]; j++) {
|
||||
if(j != 0)
|
||||
textblock2->addSpace (wordStyle);
|
||||
textblock2->addText (words2[j], wordStyle);
|
||||
}
|
||||
|
||||
textblock2->flush ();
|
||||
}
|
||||
|
||||
textblock1->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
widgetStyle2->unref();
|
||||
wordStyle->unref();
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
106
test/dw/dw_example.cc
Normal file
106
test/dw/dw_example.cc
Normal file
@ -0,0 +1,106 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
dw::fltk::FltkPlatform *platform = new dw::fltk::FltkPlatform ();
|
||||
dw::core::Layout *layout = new dw::core::Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(200, 300, "Dw Example");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
dw::fltk::FltkViewport *viewport =
|
||||
new dw::fltk::FltkViewport (0, 0, 200, 300);
|
||||
layout->attachView (viewport);
|
||||
|
||||
dw::core::style::StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
dw::core::style::FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = dw::core::style::FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = dw::core::style::FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color =
|
||||
dw::core::style::Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor =
|
||||
dw::core::style::Color::create (layout, 0xffffff);
|
||||
|
||||
dw::core::style::Style *widgetStyle =
|
||||
dw::core::style::Style::create (&styleAttrs);
|
||||
|
||||
dw::Textblock *textblock = new dw::Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
|
||||
dw::core::style::Style *wordStyle =
|
||||
dw::core::style::Style::create (&styleAttrs);
|
||||
|
||||
for(int i = 1; i <= 10; i++) {
|
||||
char buf[4];
|
||||
sprintf(buf, "%d.", i);
|
||||
|
||||
const char *words[] = { "This", "is", "the", buf, "paragraph.",
|
||||
"Here", "comes", "some", "more", "text",
|
||||
"to", "demonstrate", "word", "wrapping.",
|
||||
NULL };
|
||||
|
||||
for(int j = 0; words[j]; j++) {
|
||||
textblock->addText(words[j], wordStyle);
|
||||
textblock->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
textblock->addParbreak(10, wordStyle);
|
||||
}
|
||||
|
||||
wordStyle->unref();
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
158
test/dw/dw_find_test.cc
Normal file
158
test/dw/dw_find_test.cc
Normal file
@ -0,0 +1,158 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl_Box.H>
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
|
||||
using namespace lout::container::typed;
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
static FltkPlatform *platform;
|
||||
static Layout *layout;
|
||||
static Fl_Window *window;
|
||||
static FltkViewport *viewport;
|
||||
static Fl_Button *findButton, *resetButton;
|
||||
static Fl_Widget *resultLabel;
|
||||
|
||||
static void findCallback (Fl_Widget *widget, void *data)
|
||||
{
|
||||
//switch(layout->search ("worm", true)) {
|
||||
switch(layout->search ("WORM", false, false)) {
|
||||
case FindtextState::SUCCESS:
|
||||
resultLabel->label("SUCCESS");
|
||||
break;
|
||||
|
||||
case FindtextState::RESTART:
|
||||
resultLabel->label("RESTART");
|
||||
break;
|
||||
|
||||
case FindtextState::NOT_FOUND:
|
||||
resultLabel->label("NOT_FOUND");
|
||||
break;
|
||||
}
|
||||
|
||||
resultLabel->redraw ();
|
||||
}
|
||||
|
||||
static void resetCallback (Fl_Widget *widget, void *data)
|
||||
{
|
||||
layout->resetSearch ();
|
||||
resultLabel->label("---");
|
||||
resultLabel->redraw ();
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
platform = new FltkPlatform ();
|
||||
layout = new Layout (platform);
|
||||
|
||||
window = new Fl_Window(200, 300, "Dw Find Test");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
viewport = new FltkViewport (0, 0, 200, 280);
|
||||
viewport->end();
|
||||
layout->attachView (viewport);
|
||||
|
||||
findButton = new Fl_Button(0, 280, 50, 20, "Find");
|
||||
findButton->callback (findCallback, NULL);
|
||||
findButton->when (FL_WHEN_RELEASE);
|
||||
findButton->clear_visible_focus ();
|
||||
|
||||
resetButton = new Fl_Button(50, 280, 50, 20, "Reset");
|
||||
resetButton->callback (resetCallback, NULL);
|
||||
resetButton->when (FL_WHEN_RELEASE);
|
||||
resetButton->clear_visible_focus ();
|
||||
|
||||
resultLabel = new Fl_Box(100, 280, 100, 20, "---");
|
||||
resultLabel->box(FL_FLAT_BOX);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
styleAttrs.margin.setVal (10);
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
Style *topWidgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.margin.left = 30;
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.margin.left = 0;
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (topWidgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
Stack <Textblock> *stack = new Stack <Textblock> (false);
|
||||
stack->push (textblock);
|
||||
|
||||
for(int i = 0; i < 10; i++)
|
||||
for(int j = 0; j < 10; j++) {
|
||||
Textblock *current;
|
||||
if(j < 5) {
|
||||
current = new Textblock (false);
|
||||
stack->getTop()->addWidget (current, widgetStyle);
|
||||
stack->push (current);
|
||||
} else {
|
||||
stack->getTop()->flush ();
|
||||
stack->pop ();
|
||||
current = stack->getTop ();
|
||||
}
|
||||
|
||||
current->addText ((i == j ? "worm" : "apple"), wordStyle);
|
||||
current->addLinebreak (wordStyle);
|
||||
}
|
||||
|
||||
stack->getTop()->flush ();
|
||||
|
||||
topWidgetStyle->unref ();
|
||||
widgetStyle->unref ();
|
||||
wordStyle->unref ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
145
test/dw/dw_float_test.cc
Normal file
145
test/dw/dw_float_test.cc
Normal file
@ -0,0 +1,145 @@
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
static Textblock *firstFloat;
|
||||
static Style *wordStyle;
|
||||
|
||||
static void addTextToFloatTimeout (void *data)
|
||||
{
|
||||
printf("addTextToFloatTimeout\n");
|
||||
|
||||
const char *fWords[] = { "This", "is", "a", "float,", "which", "is",
|
||||
"set", "aside", "from", "the", "main",
|
||||
"text.", NULL };
|
||||
|
||||
for(int k = 0; fWords[k]; k++) {
|
||||
firstFloat->addText(fWords[k], wordStyle);
|
||||
firstFloat->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
firstFloat->flush();
|
||||
|
||||
Fl::repeat_timeout (2, addTextToFloatTimeout, NULL);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(400, 600, "Dw Floats Example");
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 400, 600);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
styleAttrs.font = core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.borderWidth.setVal (1);
|
||||
styleAttrs.setBorderColor (Color::create (layout, 0x808080));
|
||||
styleAttrs.setBorderStyle (BORDER_DASHED);
|
||||
styleAttrs.width = createAbsLength(100);
|
||||
styleAttrs.vloat = FLOAT_LEFT;
|
||||
Style *leftFloatStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.width = createAbsLength(80);
|
||||
styleAttrs.vloat = FLOAT_RIGHT;
|
||||
Style *rightFloatStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.borderWidth.setVal (0);
|
||||
styleAttrs.width = LENGTH_AUTO;
|
||||
styleAttrs.vloat = FLOAT_NONE;
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
|
||||
wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
for(int i = 1; i <= 10; i++) {
|
||||
char buf[16];
|
||||
snprintf(buf, sizeof(buf), "%d%s",
|
||||
i, (i == 1 ? "st" : (i == 2 ? "nd" : (i == 3 ? "rd" : "th"))));
|
||||
|
||||
const char *words[] = { "This", "is", "the", buf, "paragraph.",
|
||||
"Here", "comes", "some", "more", "text",
|
||||
"to", "demonstrate", "word", "wrapping.",
|
||||
NULL };
|
||||
|
||||
for(int j = 0; words[j]; j++) {
|
||||
textblock->addText(words[j], wordStyle);
|
||||
textblock->addSpace(wordStyle);
|
||||
|
||||
if ((i == 3 || i == 5) && j == 8) {
|
||||
textblock->addText("[float]", wordStyle);
|
||||
textblock->addSpace(wordStyle);
|
||||
|
||||
Textblock *vloat = new Textblock (false);
|
||||
textblock->addWidget(vloat, i == 3 ? leftFloatStyle : rightFloatStyle);
|
||||
|
||||
const char *fWords[] = { "This", "is", "a", "float,", "which", "is",
|
||||
"set", "aside", "from", "the", "main",
|
||||
"text.", NULL };
|
||||
|
||||
vloat->addText(i == 3 ? "Left:" : "Right:", wordStyle);
|
||||
vloat->addSpace(wordStyle);
|
||||
|
||||
for(int k = 0; fWords[k]; k++) {
|
||||
vloat->addText(fWords[k], wordStyle);
|
||||
vloat->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
vloat->flush ();
|
||||
|
||||
if(i == 3)
|
||||
firstFloat = vloat;
|
||||
}
|
||||
}
|
||||
|
||||
textblock->addParbreak(10, wordStyle);
|
||||
}
|
||||
|
||||
leftFloatStyle->unref();
|
||||
rightFloatStyle->unref();
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
Fl::add_timeout (2, addTextToFloatTimeout, NULL);
|
||||
int errorCode = Fl::run();
|
||||
|
||||
wordStyle->unref();
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
197
test/dw/dw_image_background.cc
Normal file
197
test/dw/dw_image_background.cc
Normal file
@ -0,0 +1,197 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2013 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
#include "dw/image.hh"
|
||||
|
||||
using namespace lout::signal;
|
||||
using namespace lout::misc;
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
class ImageStyleDeletionReceiver: public ObservedObject::DeletionReceiver
|
||||
{
|
||||
public:
|
||||
void deleted (ObservedObject *object);
|
||||
};
|
||||
|
||||
static StyleImage *image1 = NULL, *image2 = NULL;
|
||||
static Layout *layout;
|
||||
static int imgRow1 = 0, imgRow2 = 0;
|
||||
static ImageStyleDeletionReceiver isdr;
|
||||
|
||||
void ImageStyleDeletionReceiver::deleted (ObservedObject *object)
|
||||
{
|
||||
if ((StyleImage*)object == image1)
|
||||
image1 = NULL;
|
||||
else if ((StyleImage*)object == image2)
|
||||
image2 = NULL;
|
||||
else
|
||||
assertNotReached ();
|
||||
}
|
||||
|
||||
static void imageInitTimeout (void *data)
|
||||
{
|
||||
if (image1) {
|
||||
Imgbuf *imgbuf1 = layout->createImgbuf (Imgbuf::RGB, 400, 200, 1);
|
||||
image1->getMainImgRenderer()->setBuffer (imgbuf1, false);
|
||||
}
|
||||
|
||||
if (image2) {
|
||||
Imgbuf *imgbuf2 = layout->createImgbuf (Imgbuf::RGB, 100, 100, 1);
|
||||
image2->getMainImgRenderer()->setBuffer (imgbuf2, false);
|
||||
}
|
||||
}
|
||||
|
||||
static void imageDrawTimeout (void *data)
|
||||
{
|
||||
Imgbuf *imgbuf1 = image1 ? image1->getImgbufSrc () : NULL;
|
||||
Imgbuf *imgbuf2 = image2 ? image2->getImgbufSrc () : NULL;
|
||||
|
||||
if (imgbuf1 && imgRow1 < 200) {
|
||||
byte buf[3 * 400];
|
||||
for(int x = 0; x < 400; x++) {
|
||||
buf[3 * x + 0] = 128 + x * 127 / 399;
|
||||
buf[3 * x + 1] = 128 + (399 - x) * 127 / 399;
|
||||
buf[3 * x + 2] = 128 + imgRow1 * 127 / 199;
|
||||
}
|
||||
|
||||
imgbuf1->copyRow (imgRow1, buf);
|
||||
image1->getMainImgRenderer()->drawRow (imgRow1);
|
||||
imgRow1++;
|
||||
}
|
||||
|
||||
if (imgbuf2 && imgRow2 < 100) {
|
||||
byte buf[3 * 100];
|
||||
for(int x = 0; x < 100; x++) {
|
||||
int r = 128 + rand () % 127;
|
||||
buf[3 * x + 0] = buf[3 * x + 1] = buf[3 * x + 2] = r;
|
||||
}
|
||||
|
||||
imgbuf2->copyRow (imgRow2, buf);
|
||||
image2->getMainImgRenderer()->drawRow (imgRow2);
|
||||
imgRow2++;
|
||||
}
|
||||
|
||||
if(imgRow1 < 200 || imgRow2 < 100)
|
||||
Fl::repeat_timeout (0.5, imageDrawTimeout, NULL);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(200, 300, "Dw Example");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 200, 300);
|
||||
layout->attachView (viewport);
|
||||
|
||||
image1 = StyleImage::create ();
|
||||
image1->connectDeletion (&isdr);
|
||||
layout->setBgImage (image1, BACKGROUND_REPEAT_Y,
|
||||
BACKGROUND_ATTACHMENT_SCROLL, createPerLength (0.5),
|
||||
createAbsLength (30));
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
styleAttrs.x_lang[0] = 'e';
|
||||
styleAttrs.x_lang[1] = 'n';
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
//styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.backgroundImage = NULL;
|
||||
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
image2 = styleAttrs.backgroundImage = StyleImage::create ();
|
||||
image2->connectDeletion (&isdr);
|
||||
styleAttrs.backgroundRepeat = BACKGROUND_REPEAT;
|
||||
styleAttrs.backgroundPositionX = createPerLength (0);
|
||||
styleAttrs.backgroundPositionY = createPerLength (0);
|
||||
Style *wordStyleBg = Style::create (&styleAttrs);
|
||||
|
||||
for(int i = 1; i <= 1; i++) {
|
||||
char buf[4];
|
||||
sprintf(buf, "%d.", i);
|
||||
|
||||
const char *words[] = { "This", "is", "the", buf, "paragraph.",
|
||||
"Here", "comes", "some", "more", "text",
|
||||
"to", "demonstrate", "word", "wrapping.",
|
||||
NULL };
|
||||
|
||||
for(int j = 0; words[j]; j++) {
|
||||
textblock->addText(words[j], j == 11 ? wordStyleBg : wordStyle);
|
||||
textblock->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
textblock->addParbreak(10, wordStyle);
|
||||
}
|
||||
|
||||
wordStyle->unref();
|
||||
wordStyleBg->unref();
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
|
||||
Fl::add_timeout (1.0, imageInitTimeout, NULL);
|
||||
Fl::add_timeout (0.1, imageDrawTimeout, NULL);
|
||||
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
156
test/dw/dw_images_scaled.cc
Normal file
156
test/dw/dw_images_scaled.cc
Normal file
@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
#include "dw/image.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
static Layout *layout;
|
||||
static Image *image;
|
||||
static core::Imgbuf *imgbuf = NULL;
|
||||
static int imgRow = 0;
|
||||
|
||||
static void imageInitTimeout (void *data)
|
||||
{
|
||||
//imgbuf = layout->createImgbuf (Imgbuf::RGBA, 400, 200);
|
||||
imgbuf = layout->createImgbuf (Imgbuf::RGB, 400, 200, 1);
|
||||
image->setBuffer (imgbuf);
|
||||
}
|
||||
|
||||
/*
|
||||
static void imageDrawTimeout (void *data)
|
||||
{
|
||||
if (imgbuf) {
|
||||
for (int i = 0; i < 1; i++) {
|
||||
byte buf[4 * 400];
|
||||
for(int x = 0; x < 400; x++) {
|
||||
buf[4 * x + 0] = x * 255 / 399;
|
||||
buf[4 * x + 1] = (399 - x) * 255 / 399;
|
||||
buf[4 * x + 2] = imgRow * 255 / 199;
|
||||
buf[4 * x + 3] = (199 - imgRow) * 255 / 199;
|
||||
}
|
||||
|
||||
imgbuf->copyRow (imgRow, buf);
|
||||
image->drawRow (imgRow);
|
||||
imgRow++;
|
||||
}
|
||||
}
|
||||
|
||||
if(imgRow < 200)
|
||||
::fltk::repeat_timeout (0.5, imageDrawTimeout, NULL);
|
||||
}
|
||||
*/
|
||||
|
||||
static void imageDrawTimeout (void *data)
|
||||
{
|
||||
if (imgbuf) {
|
||||
for (int i = 0; i < 1; i++) {
|
||||
byte buf[3 * 400];
|
||||
for(int x = 0; x < 400; x++) {
|
||||
buf[3 * x + 0] = x * 255 / 399;
|
||||
buf[3 * x + 1] = (399 - x) * 255 / 399;
|
||||
buf[3 * x + 2] = imgRow * 255 / 199;
|
||||
}
|
||||
|
||||
imgbuf->copyRow (imgRow, buf);
|
||||
image->drawRow (imgRow);
|
||||
imgRow++;
|
||||
}
|
||||
}
|
||||
|
||||
if(imgRow < 200)
|
||||
Fl::repeat_timeout (0.5, imageDrawTimeout, NULL);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(410, 210, "Dw Scaled Image");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 410, 210);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
styleAttrs.width = createPerLength (1.0);
|
||||
styleAttrs.height = createPerLength (1.0);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
|
||||
Style *imageStyle = Style::create (&styleAttrs);
|
||||
|
||||
image = new dw::Image ("");
|
||||
textblock->addWidget (image, imageStyle);
|
||||
textblock->addSpace (imageStyle);
|
||||
|
||||
imageStyle->unref();
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
|
||||
Fl::add_timeout (2.0, imageInitTimeout, NULL);
|
||||
Fl::add_timeout (0.1, imageDrawTimeout, NULL);
|
||||
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
151
test/dw/dw_images_scaled2.cc
Normal file
151
test/dw/dw_images_scaled2.cc
Normal file
@ -0,0 +1,151 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
#include "dw/image.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
static Layout *layout;
|
||||
static Image *image1, *image2;
|
||||
static core::Imgbuf *imgbuf = NULL;
|
||||
static int imgRow = 0;
|
||||
|
||||
static void imageInitTimeout (void *data)
|
||||
{
|
||||
imgbuf = layout->createImgbuf (Imgbuf::RGB, 400, 200, 1);
|
||||
image1->setBuffer (imgbuf);
|
||||
image2->setBuffer (imgbuf);
|
||||
}
|
||||
|
||||
static void imageDrawTimeout (void *data)
|
||||
{
|
||||
if (imgbuf) {
|
||||
for (int i = 0; i < 1; i++) {
|
||||
byte buf[3 * 400];
|
||||
for(int x = 0; x < 400; x++) {
|
||||
buf[3 * x + 0] = x * 255 / 399;
|
||||
buf[3 * x + 1] = (399 - x) * 255 / 399;
|
||||
buf[3 * x + 2] = imgRow * 255 / 199;
|
||||
}
|
||||
|
||||
imgbuf->copyRow (imgRow, buf);
|
||||
image1->drawRow (imgRow);
|
||||
image2->drawRow (imgRow);
|
||||
imgRow++;
|
||||
}
|
||||
}
|
||||
|
||||
if(imgRow < 200)
|
||||
Fl::repeat_timeout (0.5, imageDrawTimeout, NULL);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(410, 210, "Dw Scaled Image 2");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 410, 210);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.borderWidth.setVal (0);
|
||||
styleAttrs.padding.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.borderWidth.setVal (1);
|
||||
styleAttrs.setBorderColor (Color::create (layout, 0x000080));
|
||||
styleAttrs.setBorderStyle (BORDER_SOLID);
|
||||
styleAttrs.padding.setVal (1);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.width = createPerLength (0.25);
|
||||
styleAttrs.height = createPerLength (0.25);
|
||||
|
||||
Style *imageStyle1 = Style::create (&styleAttrs);
|
||||
image1 = new dw::Image ("A longer ALT Text to demonstrate clipping.");
|
||||
textblock->addWidget (image1, imageStyle1);
|
||||
imageStyle1->unref();
|
||||
|
||||
textblock->addParbreak (10, wordStyle);
|
||||
|
||||
styleAttrs.width = LENGTH_AUTO;
|
||||
styleAttrs.height = LENGTH_AUTO;
|
||||
|
||||
Style *imageStyle2 = Style::create (&styleAttrs);
|
||||
image2 = new dw::Image ("A longer ALT Text to demonstrate clipping.");
|
||||
textblock->addWidget (image2, imageStyle2);
|
||||
imageStyle2->unref();
|
||||
|
||||
wordStyle->unref ();
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
|
||||
Fl::add_timeout (3.0, imageInitTimeout, NULL);
|
||||
Fl::add_timeout (0.1, imageDrawTimeout, NULL);
|
||||
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
155
test/dw/dw_images_simple.cc
Normal file
155
test/dw/dw_images_simple.cc
Normal file
@ -0,0 +1,155 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
#include "dw/image.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
static Layout *layout;
|
||||
static Image *image;
|
||||
static core::Imgbuf *imgbuf = NULL;
|
||||
static int imgRow = 0;
|
||||
|
||||
static void imageInitTimeout (void *data)
|
||||
{
|
||||
const bool resize = true;
|
||||
//imgbuf = layout->createImgbuf (Imgbuf::RGBA, 400, 200);
|
||||
imgbuf = layout->createImgbuf (Imgbuf::RGB, 400, 200, 1);
|
||||
image->setBuffer (imgbuf, resize);
|
||||
}
|
||||
|
||||
/*
|
||||
static void imageDrawTimeout (void *data)
|
||||
{
|
||||
if (imgbuf) {
|
||||
for (int i = 0; i < 1; i++) {
|
||||
byte buf[4 * 400];
|
||||
for(int x = 0; x < 400; x++) {
|
||||
buf[4 * x + 0] = x * 255 / 399;
|
||||
buf[4 * x + 1] = (399 - x) * 255 / 399;
|
||||
buf[4 * x + 2] = imgRow * 255 / 199;
|
||||
buf[4 * x + 3] = (199 - imgRow) * 255 / 199;
|
||||
}
|
||||
|
||||
imgbuf->copyRow (imgRow, buf);
|
||||
image->drawRow (imgRow);
|
||||
imgRow++;
|
||||
}
|
||||
}
|
||||
|
||||
if(imgRow < 200)
|
||||
Fl::repeat_timeout (0.5, imageDrawTimeout, NULL);
|
||||
}
|
||||
*/
|
||||
|
||||
static void imageDrawTimeout (void *data)
|
||||
{
|
||||
if (imgbuf) {
|
||||
for (int i = 0; i < 1; i++) {
|
||||
byte buf[3 * 400];
|
||||
for(int x = 0; x < 400; x++) {
|
||||
buf[3 * x + 0] = x * 255 / 399;
|
||||
buf[3 * x + 1] = (399 - x) * 255 / 399;
|
||||
buf[3 * x + 2] = imgRow * 255 / 199;
|
||||
}
|
||||
|
||||
imgbuf->copyRow (imgRow, buf);
|
||||
image->drawRow (imgRow);
|
||||
imgRow++;
|
||||
}
|
||||
}
|
||||
|
||||
if(imgRow < 200)
|
||||
Fl::repeat_timeout (0.5, imageDrawTimeout, NULL);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(410, 210, "Dw Simple Image");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 410, 210);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
|
||||
Style *imageStyle = Style::create (&styleAttrs);
|
||||
|
||||
image = new dw::Image ("");
|
||||
textblock->addWidget (image, imageStyle);
|
||||
textblock->addSpace (imageStyle);
|
||||
|
||||
imageStyle->unref();
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
|
||||
Fl::add_timeout (2.0, imageInitTimeout, NULL);
|
||||
Fl::add_timeout (0.1, imageDrawTimeout, NULL);
|
||||
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
109
test/dw/dw_imgbuf_mem_test.cc
Normal file
109
test/dw/dw_imgbuf_mem_test.cc
Normal file
@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
|
||||
using namespace lout::signal;
|
||||
using namespace dw::core;
|
||||
using namespace dw::fltk;
|
||||
|
||||
void solution1 ()
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Imgbuf *rootbuf = layout->createImgbuf (Imgbuf::RGB, 100, 100, 1);
|
||||
rootbuf->ref (); // Extra reference by the dicache.
|
||||
printf ("=== Can be deleted? %s.\n",
|
||||
rootbuf->lastReference () ? "Yes" : "No");
|
||||
Imgbuf *scaledbuf = rootbuf->getScaledBuf (50, 50);
|
||||
printf ("=== Can be deleted? %s.\n",
|
||||
rootbuf->lastReference () ? "Yes" : "No");
|
||||
rootbuf->unref ();
|
||||
printf ("=== Can be deleted? %s.\n",
|
||||
rootbuf->lastReference () ? "Yes" : "No");
|
||||
scaledbuf->unref ();
|
||||
printf ("=== Can be deleted? %s.\n",
|
||||
rootbuf->lastReference () ? "Yes" : "No");
|
||||
rootbuf->unref (); // Extra reference by the dicache.
|
||||
|
||||
delete layout;
|
||||
}
|
||||
|
||||
void solution2 ()
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Imgbuf *rootbuf = layout->createImgbuf (Imgbuf::RGB, 100, 100, 1);
|
||||
rootbuf->setDeleteOnUnref (false);
|
||||
printf ("=== Can be deleted? %s.\n",
|
||||
!rootbuf->isReferred () ? "Yes" : "No");
|
||||
Imgbuf *scaledbuf = rootbuf->getScaledBuf (50, 50);
|
||||
printf ("=== Can be deleted? %s.\n",
|
||||
!rootbuf->isReferred () ? "Yes" : "No");
|
||||
rootbuf->unref ();
|
||||
printf ("=== Can be deleted? %s.\n",
|
||||
!rootbuf->isReferred () ? "Yes" : "No");
|
||||
scaledbuf->unref ();
|
||||
printf ("=== Can be deleted? %s.\n",
|
||||
!rootbuf->isReferred () ? "Yes" : "No");
|
||||
delete rootbuf;
|
||||
|
||||
delete layout;
|
||||
}
|
||||
|
||||
class RootbufDeletionReceiver: public ObservedObject::DeletionReceiver
|
||||
{
|
||||
void deleted (ObservedObject *object);
|
||||
};
|
||||
|
||||
void RootbufDeletionReceiver::deleted (ObservedObject *object)
|
||||
{
|
||||
printf ("=== Is deleted now.\n");
|
||||
delete this;
|
||||
}
|
||||
|
||||
void solution3 ()
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Imgbuf *rootbuf = layout->createImgbuf (Imgbuf::RGB, 100, 100, 1);
|
||||
rootbuf->connectDeletion (new RootbufDeletionReceiver ());
|
||||
Imgbuf *scaledbuf = rootbuf->getScaledBuf (50, 50);
|
||||
rootbuf->unref ();
|
||||
scaledbuf->unref ();
|
||||
|
||||
delete layout;
|
||||
}
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
printf ("========== SOLUTION 1 ==========\n");
|
||||
solution1 ();
|
||||
printf ("========== SOLUTION 2 ==========\n");
|
||||
solution2 ();
|
||||
printf ("========== SOLUTION 3 ==========\n");
|
||||
solution3 ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
164
test/dw/dw_links.cc
Normal file
164
test/dw/dw_links.cc
Normal file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
class LinkTestReceiver: public Layout::LinkReceiver
|
||||
{
|
||||
bool enter (Widget *widget, int link, int img, int x, int y);
|
||||
bool press (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event);
|
||||
bool release (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event);
|
||||
bool click (Widget *widget, int link, int img,
|
||||
int x, int y, EventButton *event);
|
||||
};
|
||||
|
||||
bool LinkTestReceiver::enter (Widget *widget, int link, int img, int x, int y)
|
||||
{
|
||||
printf ("enter: %d\n", link);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LinkTestReceiver::press (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event)
|
||||
{
|
||||
printf ("press: %d\n", link);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LinkTestReceiver::release (Widget *widget, int link, int img, int x,int y,
|
||||
EventButton *event)
|
||||
{
|
||||
printf ("release: %d\n", link);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LinkTestReceiver::click (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event)
|
||||
{
|
||||
printf ("click: %d\n", link);
|
||||
return true;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
LinkTestReceiver linkTestReceiver;
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(200, 300, "Dw Links");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 200, 300);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
layout->connectLink (&linkTestReceiver);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.cursor = CURSOR_TEXT;
|
||||
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x0000ff);
|
||||
styleAttrs.textDecoration = TEXT_DECORATION_UNDERLINE;
|
||||
styleAttrs.cursor = CURSOR_POINTER;
|
||||
|
||||
for(int i = 1; i <= 10; i++) {
|
||||
char buf[4];
|
||||
sprintf(buf, "%d.", i);
|
||||
|
||||
const char *words1[] = {
|
||||
"This", "is", "the", buf, "paragraph.",
|
||||
"Here", "comes", "some", "more", "text",
|
||||
"to", "demonstrate", "word", "wrapping.",
|
||||
NULL };
|
||||
const char *words2[] = {
|
||||
"Click", "here", "for", "more..", NULL };
|
||||
|
||||
for(int j = 0; words1[j]; j++) {
|
||||
textblock->addText(words1[j], wordStyle);
|
||||
textblock->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
styleAttrs.x_link = i;
|
||||
Style *linkStyle = Style::create (&styleAttrs);
|
||||
|
||||
for(int j = 0; words2[j]; j++) {
|
||||
textblock->addText(words2[j], linkStyle);
|
||||
textblock->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
linkStyle->unref ();
|
||||
|
||||
textblock->addParbreak(10, wordStyle);
|
||||
}
|
||||
|
||||
wordStyle->unref();
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
193
test/dw/dw_links2.cc
Normal file
193
test/dw/dw_links2.cc
Normal file
@ -0,0 +1,193 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl_Box.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
class LinkTestReceiver: public Layout::LinkReceiver
|
||||
{
|
||||
bool enter (Widget *widget, int link, int img, int x, int y);
|
||||
bool press (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event);
|
||||
bool release (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event);
|
||||
bool click (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event);
|
||||
};
|
||||
|
||||
bool LinkTestReceiver::enter (Widget *widget, int link, int img, int x, int y)
|
||||
{
|
||||
printf ("enter: %d\n", link);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LinkTestReceiver::press (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event)
|
||||
{
|
||||
printf ("press: %d\n", link);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LinkTestReceiver::release (Widget *widget, int link, int img, int x,int y,
|
||||
EventButton *event)
|
||||
{
|
||||
printf ("release: %d\n", link);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LinkTestReceiver::click (Widget *widget, int link, int img, int x, int y,
|
||||
EventButton *event)
|
||||
{
|
||||
printf ("click: %d\n", link);
|
||||
return true;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int MainIdx;
|
||||
int ww = 200, wh = 300, lh = 24;
|
||||
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(200, 300, "Dw Links2");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
Fl_Widget *Panel = new Fl_Box(0, 0, ww, lh, "CONTROL PANEL");
|
||||
|
||||
Panel->color(FL_GRAY_RAMP + 3);
|
||||
Panel->labelcolor(FL_WHITE);
|
||||
Panel->box(FL_FLAT_BOX);
|
||||
Fl_Widget *Main = new Fl_Box(0, lh, ww, wh - 2*lh, "MAIN RENDERING AREA");
|
||||
Main->color(FL_GRAY_RAMP + 4);
|
||||
Main->labelcolor(FL_WHITE);
|
||||
MainIdx = window->find(Main);
|
||||
/* status bar */
|
||||
Fl_Widget *Bar = new Fl_Box(0, wh - lh, 200, lh, "STATUS BAR...");
|
||||
Bar->color(FL_GRAY_RAMP + 3);
|
||||
Bar->labelcolor(FL_WHITE);
|
||||
Bar->box(FL_FLAT_BOX);
|
||||
|
||||
window->resizable(Main);
|
||||
window->end();
|
||||
|
||||
//
|
||||
// Create the main Dw and add some text there.
|
||||
//
|
||||
window->remove(MainIdx);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, lh, ww, wh - 2*lh);
|
||||
layout->attachView (viewport);
|
||||
|
||||
window->end();
|
||||
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
layout->connectLink (new LinkTestReceiver ());
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.cursor = CURSOR_TEXT;
|
||||
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x0000ff);
|
||||
styleAttrs.textDecoration = TEXT_DECORATION_UNDERLINE;
|
||||
styleAttrs.cursor = CURSOR_POINTER;
|
||||
|
||||
for(int i = 1; i <= 30; i++) {
|
||||
char buf[4];
|
||||
sprintf(buf, "%d.", i);
|
||||
|
||||
const char *words1[] = {
|
||||
"This", "is", "the", buf, "paragraph.",
|
||||
"Here", "comes", "some", "more", "text",
|
||||
"to", "demonstrate", "word", "wrapping.",
|
||||
NULL };
|
||||
const char *words2[] = {
|
||||
"Click", "here", "for", "more..", NULL };
|
||||
|
||||
for(int j = 0; words1[j]; j++) {
|
||||
textblock->addText (words1[j], wordStyle);
|
||||
textblock->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
styleAttrs.x_link = i;
|
||||
Style *linkStyle = Style::create (&styleAttrs);
|
||||
|
||||
for(int j = 0; words2[j]; j++) {
|
||||
textblock->addText (words2[j], linkStyle);
|
||||
textblock->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
linkStyle->unref ();
|
||||
|
||||
textblock->addParbreak(10, wordStyle);
|
||||
}
|
||||
|
||||
wordStyle->unref();
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
137
test/dw/dw_lists.cc
Normal file
137
test/dw/dw_lists.cc
Normal file
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
#include "dw/listitem.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(200, 300, "Dw Lists");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 200, 300);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.cursor = CURSOR_TEXT;
|
||||
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.margin.setVal (5);
|
||||
styleAttrs.padding.setVal (5);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffff40);
|
||||
styleAttrs.setBorderColor (Color::create (layout, 0x000000));
|
||||
styleAttrs.setBorderStyle (BORDER_SOLID);
|
||||
styleAttrs.borderWidth.setVal (1);
|
||||
|
||||
Style *itemStyle = Style::create (&styleAttrs);
|
||||
|
||||
const char *wordsPar[] = {
|
||||
"This", "is", "a", "normal", "paragraph.", "And",
|
||||
"some", "list", "items", "follow:", NULL };
|
||||
const char *wordsItem[] = {
|
||||
"This", "is", "a", "list", "item.", "Here",
|
||||
"comes", "some", "more", "text", "to",
|
||||
"demonstrate", "word", "wrapping.", NULL };
|
||||
|
||||
|
||||
for(int i = 0; wordsPar[i]; i++) {
|
||||
if(i != 0)
|
||||
textblock->addSpace (wordStyle);
|
||||
textblock->addText (wordsPar[i], wordStyle);
|
||||
}
|
||||
textblock->addParbreak (5, wordStyle);
|
||||
|
||||
ListItem *refItem = NULL;
|
||||
|
||||
for(int i = 1; i <= 100; i++) {
|
||||
ListItem *listItem = new ListItem (refItem, false);
|
||||
refItem = listItem;
|
||||
|
||||
textblock->addWidget (listItem, itemStyle);
|
||||
textblock->addParbreak (2, wordStyle);
|
||||
|
||||
char buf[16];
|
||||
sprintf (buf, "%d.", i);
|
||||
listItem->initWithText (buf, wordStyle);
|
||||
|
||||
for(int j = 0; wordsItem[j]; j++) {
|
||||
if(j != 0)
|
||||
listItem->addSpace (wordStyle);
|
||||
listItem->addText (wordsItem[j], wordStyle);
|
||||
}
|
||||
|
||||
listItem->flush ();
|
||||
}
|
||||
|
||||
wordStyle->unref();
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
103
test/dw/dw_resource_test.cc
Normal file
103
test/dw/dw_resource_test.cc
Normal file
@ -0,0 +1,103 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/textblock.hh"
|
||||
#include "dw/ui.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::core::ui;
|
||||
using namespace dw::fltk;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(410, 210, "Dw Resource test");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 410, 210);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock = new Textblock (false);
|
||||
textblock->setStyle (widgetStyle);
|
||||
layout->setWidget (textblock);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
|
||||
widgetStyle = Style::create (&styleAttrs);
|
||||
|
||||
SelectionResource *res = layout->getResourceFactory()->createListResource
|
||||
(ListResource::SELECTION_AT_MOST_ONE, 4);
|
||||
//SelectionResource *res =
|
||||
// layout->getResourceFactory()->createOptionMenuResource ();
|
||||
|
||||
Embed *embed = new Embed (res);
|
||||
textblock->addWidget (embed, widgetStyle);
|
||||
textblock->addSpace (widgetStyle);
|
||||
|
||||
widgetStyle->unref();
|
||||
|
||||
for(int i = 0; i < 50; i++)
|
||||
res->addItem ("Hello, world!", true, i == 0 ? true : false);
|
||||
|
||||
textblock->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
245
test/dw/dw_simple_container.cc
Normal file
245
test/dw/dw_simple_container.cc
Normal file
@ -0,0 +1,245 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2014 Sebastian Geerken <sgeerken@dillo.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "dw_simple_container.hh"
|
||||
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace lout::misc;
|
||||
|
||||
namespace dw {
|
||||
|
||||
int SimpleContainer::CLASS_ID = -1;
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
SimpleContainer::SimpleContainerIterator::SimpleContainerIterator
|
||||
(SimpleContainer *simpleContainer, Content::Type mask, bool atEnd) :
|
||||
Iterator (simpleContainer, mask, atEnd)
|
||||
{
|
||||
content.type = atEnd ? Content::END : Content::START;
|
||||
}
|
||||
|
||||
lout::object::Object *SimpleContainer::SimpleContainerIterator::clone ()
|
||||
{
|
||||
SimpleContainerIterator *sci =
|
||||
new SimpleContainerIterator ((SimpleContainer*)getWidget(),
|
||||
getMask(), false);
|
||||
sci->content = content;
|
||||
return sci;
|
||||
}
|
||||
|
||||
int SimpleContainer::SimpleContainerIterator::index ()
|
||||
{
|
||||
switch (content.type) {
|
||||
case Content::START:
|
||||
return 0;
|
||||
case Content::WIDGET_IN_FLOW:
|
||||
return 1;
|
||||
case Content::END:
|
||||
return 2;
|
||||
default:
|
||||
assertNotReached ();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int SimpleContainer::SimpleContainerIterator::compareTo
|
||||
(lout::object::Comparable *other)
|
||||
{
|
||||
return index () - ((SimpleContainerIterator*)other)->index ();
|
||||
}
|
||||
|
||||
bool SimpleContainer::SimpleContainerIterator::next ()
|
||||
{
|
||||
SimpleContainer *simpleContainer = (SimpleContainer*)getWidget();
|
||||
|
||||
if (content.type == Content::END)
|
||||
return false;
|
||||
|
||||
// simple containers only contain widgets:
|
||||
if ((getMask() & Content::WIDGET_IN_FLOW) == 0) {
|
||||
content.type = Content::END;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (content.type == Content::START) {
|
||||
if (simpleContainer->child != NULL) {
|
||||
content.type = Content::WIDGET_IN_FLOW;
|
||||
content.widget = simpleContainer->child;
|
||||
return true;
|
||||
} else {
|
||||
content.type = Content::END;
|
||||
return false;
|
||||
}
|
||||
} else /* if (content.type == Content::WIDGET) */ {
|
||||
content.type = Content::END;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool SimpleContainer::SimpleContainerIterator::prev ()
|
||||
{
|
||||
SimpleContainer *simpleContainer = (SimpleContainer*)getWidget();
|
||||
|
||||
if (content.type == Content::START)
|
||||
return false;
|
||||
|
||||
// simple containers only contain widgets:
|
||||
if ((getMask() & Content::WIDGET_IN_FLOW) == 0) {
|
||||
content.type = Content::START;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (content.type == Content::END) {
|
||||
if (simpleContainer->child != NULL) {
|
||||
content.type = Content::WIDGET_IN_FLOW;
|
||||
content.widget = simpleContainer->child;
|
||||
return true;
|
||||
} else {
|
||||
content.type = Content::START;
|
||||
return false;
|
||||
}
|
||||
} else /* if (content.type == Content::WIDGET) */ {
|
||||
content.type = Content::START;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleContainer::SimpleContainerIterator::highlight (int start,
|
||||
int end,
|
||||
HighlightLayer layer)
|
||||
{
|
||||
/** todo Needs this an implementation? */
|
||||
}
|
||||
|
||||
void SimpleContainer::SimpleContainerIterator::unhighlight (int direction,
|
||||
HighlightLayer
|
||||
layer)
|
||||
{
|
||||
/** todo Needs this an implementation? */
|
||||
}
|
||||
|
||||
void SimpleContainer::SimpleContainerIterator::getAllocation (int start,
|
||||
int end,
|
||||
Allocation
|
||||
*allocation)
|
||||
{
|
||||
/** \bug Not implemented. */
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
SimpleContainer::SimpleContainer ()
|
||||
{
|
||||
registerName ("dw::SimpleContainer", &CLASS_ID);
|
||||
child = NULL;
|
||||
}
|
||||
|
||||
SimpleContainer::~SimpleContainer ()
|
||||
{
|
||||
if (child)
|
||||
delete child;
|
||||
}
|
||||
|
||||
void SimpleContainer::sizeRequestSimpl (Requisition *requisition)
|
||||
{
|
||||
Requisition childReq;
|
||||
if (child)
|
||||
child->sizeRequest (&childReq);
|
||||
else
|
||||
childReq.width = childReq.ascent = childReq.descent = 0;
|
||||
|
||||
requisition->width = childReq.width + boxDiffWidth ();
|
||||
requisition->ascent = childReq.ascent + boxOffsetY ();
|
||||
requisition->descent = childReq.descent + boxRestHeight ();
|
||||
|
||||
correctRequisition (requisition, splitHeightPreserveAscent, true, true);
|
||||
}
|
||||
|
||||
|
||||
void SimpleContainer::getExtremesSimpl (Extremes *extremes)
|
||||
{
|
||||
Extremes childExtr;
|
||||
if (child)
|
||||
child->getExtremes (&childExtr);
|
||||
else
|
||||
childExtr.minWidth = childExtr.minWidthIntrinsic = childExtr.maxWidth =
|
||||
childExtr.maxWidthIntrinsic = extremes->adjustmentWidth = 0;
|
||||
|
||||
extremes->minWidth = childExtr.minWidth + boxDiffWidth ();
|
||||
extremes->minWidthIntrinsic = childExtr.minWidthIntrinsic + boxDiffWidth ();
|
||||
extremes->maxWidth = childExtr.maxWidth + boxDiffWidth ();
|
||||
extremes->maxWidthIntrinsic = childExtr.maxWidthIntrinsic + boxDiffWidth ();
|
||||
extremes->adjustmentWidth = childExtr.adjustmentWidth + boxDiffWidth ();
|
||||
|
||||
correctExtremes (extremes, true);
|
||||
}
|
||||
|
||||
void SimpleContainer::sizeAllocateImpl (Allocation *allocation)
|
||||
{
|
||||
Allocation childAlloc;
|
||||
|
||||
if (child) {
|
||||
childAlloc.x = allocation->x + boxOffsetX ();
|
||||
childAlloc.y = allocation->y + boxOffsetY ();
|
||||
childAlloc.width = allocation->width - boxDiffWidth ();
|
||||
childAlloc.ascent = allocation->ascent - boxOffsetY ();
|
||||
childAlloc.descent = allocation->descent - boxRestHeight ();
|
||||
child->sizeAllocate (&childAlloc);
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleContainer::draw (View *view, Rectangle *area,
|
||||
DrawingContext *context)
|
||||
{
|
||||
drawWidgetBox (view, area, false);
|
||||
Rectangle childArea;
|
||||
if (child && child->intersects (this, area, &childArea))
|
||||
child->draw (view, &childArea, context);
|
||||
}
|
||||
|
||||
Iterator *SimpleContainer::iterator (Content::Type mask, bool atEnd)
|
||||
{
|
||||
return new SimpleContainerIterator (this, mask, atEnd);
|
||||
}
|
||||
|
||||
void SimpleContainer::removeChild (Widget *child)
|
||||
{
|
||||
assert (child == this->child);
|
||||
this->child = NULL;
|
||||
|
||||
queueResize (0, true);
|
||||
}
|
||||
|
||||
void SimpleContainer::setChild (Widget *child)
|
||||
{
|
||||
if (this->child)
|
||||
delete this->child;
|
||||
|
||||
this->child = child;
|
||||
if (this->child)
|
||||
this->child->setParent (this);
|
||||
|
||||
queueResize (0, true);
|
||||
}
|
||||
|
||||
} // namespace dw
|
||||
57
test/dw/dw_simple_container.hh
Normal file
57
test/dw/dw_simple_container.hh
Normal file
@ -0,0 +1,57 @@
|
||||
#ifndef __DW_SIMPLE_CONTAINER_HH__
|
||||
#define __DW_SIMPLE_CONTAINER_HH__
|
||||
|
||||
#include "dw/core.hh"
|
||||
|
||||
namespace dw {
|
||||
|
||||
/**
|
||||
* Simple widget used for testing concepts.
|
||||
*/
|
||||
class SimpleContainer: public core::Widget
|
||||
{
|
||||
private:
|
||||
class SimpleContainerIterator: public core::Iterator
|
||||
{
|
||||
private:
|
||||
int index ();
|
||||
|
||||
public:
|
||||
SimpleContainerIterator (SimpleContainer *simpleContainer,
|
||||
core::Content::Type mask,
|
||||
bool atEnd);
|
||||
|
||||
lout::object::Object *clone ();
|
||||
int compareTo (lout::object::Comparable *other);
|
||||
|
||||
bool next ();
|
||||
bool prev ();
|
||||
void highlight (int start, int end, core::HighlightLayer layer);
|
||||
void unhighlight (int direction, core::HighlightLayer layer);
|
||||
void getAllocation (int start, int end, core::Allocation *allocation);
|
||||
};
|
||||
|
||||
Widget *child;
|
||||
|
||||
protected:
|
||||
void sizeRequestSimpl (core::Requisition *requisition);
|
||||
void getExtremesSimpl (core::Extremes *extremes);
|
||||
void sizeAllocateImpl (core::Allocation *allocation);
|
||||
|
||||
public:
|
||||
static int CLASS_ID;
|
||||
|
||||
SimpleContainer ();
|
||||
~SimpleContainer ();
|
||||
|
||||
void draw (core::View *view, core::Rectangle *area,
|
||||
core::DrawingContext *context);
|
||||
core::Iterator *iterator (core::Content::Type mask, bool atEnd);
|
||||
void removeChild (Widget *child);
|
||||
|
||||
void setChild (core::Widget *child);
|
||||
};
|
||||
|
||||
} // namespace dw
|
||||
|
||||
#endif // __DW_SIMPLE_CONTAINER_HH__
|
||||
115
test/dw/dw_simple_container_test.cc
Normal file
115
test/dw/dw_simple_container_test.cc
Normal file
@ -0,0 +1,115 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2014 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw_simple_container.hh"
|
||||
#include "dw/textblock.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(200, 300, "Dw Example");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 200, 300);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
Style *textblockStyle1 = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.margin.setVal (0);
|
||||
|
||||
Style *textblockStyle2 = Style::create (&styleAttrs);
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.borderWidth.setVal (5);
|
||||
styleAttrs.setBorderColor (Color::create (layout, 0x800080));
|
||||
styleAttrs.setBorderStyle (BORDER_DASHED);
|
||||
styleAttrs.padding.setVal (5);
|
||||
|
||||
Style *containerStyle = Style::create (&styleAttrs);
|
||||
|
||||
Textblock *textblock1 = new Textblock (false);
|
||||
textblock1->setStyle (textblockStyle1);
|
||||
layout->setWidget (textblock1);
|
||||
|
||||
SimpleContainer *simpleContainer = new SimpleContainer ();
|
||||
simpleContainer->setStyle (containerStyle);
|
||||
textblock1->addWidget (simpleContainer, containerStyle);
|
||||
|
||||
Textblock *textblock2 = new Textblock (false);
|
||||
textblock2->setStyle (textblockStyle2);
|
||||
simpleContainer->setChild (textblock2);
|
||||
|
||||
const char *words[] = { "This", "is", "only", "a", "short", "paragraph.",
|
||||
NULL };
|
||||
|
||||
for(int j = 0; words[j]; j++) {
|
||||
textblock2->addText(words[j], wordStyle);
|
||||
textblock2->addSpace(wordStyle);
|
||||
}
|
||||
|
||||
textblockStyle1->unref();
|
||||
textblockStyle2->unref();
|
||||
containerStyle->unref();
|
||||
wordStyle->unref();
|
||||
|
||||
textblock1->flush ();
|
||||
textblock2->flush ();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
117
test/dw/dw_table.cc
Normal file
117
test/dw/dw_table.cc
Normal file
@ -0,0 +1,117 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/table.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(300, 300, "Dw Table");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 300, 300);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
styleAttrs.padding.setVal (0);
|
||||
styleAttrs.borderWidth.setVal (1);
|
||||
styleAttrs.setBorderStyle (BORDER_OUTSET);
|
||||
styleAttrs.setBorderColor (Color::create (layout, 0xffffff));
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
styleAttrs.hBorderSpacing = 5;
|
||||
styleAttrs.vBorderSpacing = 5;
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
Style *tableStyle = Style::create (&styleAttrs);
|
||||
|
||||
Table *table = new Table (false);
|
||||
table->setStyle (tableStyle);
|
||||
layout->setWidget (table);
|
||||
|
||||
tableStyle->unref();
|
||||
|
||||
styleAttrs.setBorderStyle (BORDER_INSET);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.padding.setVal (5);
|
||||
|
||||
Style *cellStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.borderWidth.setVal (0);
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.cursor = CURSOR_TEXT;
|
||||
styleAttrs.textAlignChar = '.';
|
||||
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
table->addRow (wordStyle);
|
||||
|
||||
for (int j = 0; j < 4; j++) {
|
||||
Textblock *cell = new Textblock (false);
|
||||
cell->setStyle (cellStyle);
|
||||
table->addCell (cell, 1, 1);
|
||||
|
||||
char buf[10];
|
||||
sprintf (buf, "cell %c", 'A' + 4 * i + j);
|
||||
|
||||
cell->addText (buf, wordStyle);
|
||||
cell->flush ();
|
||||
}
|
||||
}
|
||||
|
||||
wordStyle->unref();
|
||||
cellStyle->unref();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
122
test/dw/dw_table_aligned.cc
Normal file
122
test/dw/dw_table_aligned.cc
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/table.hh"
|
||||
#include "dw/alignedtablecell.hh"
|
||||
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::fltk;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(200, 300, "Dw Table Aligned");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 200, 300);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
styleAttrs.borderWidth.setVal (1);
|
||||
styleAttrs.setBorderStyle (BORDER_OUTSET);
|
||||
styleAttrs.setBorderColor (Color::create (layout, 0x808080));
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Bitstream Charter";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xa0a0a0);
|
||||
styleAttrs.hBorderSpacing = 5;
|
||||
styleAttrs.vBorderSpacing = 5;
|
||||
|
||||
Style *tableStyle = Style::create (&styleAttrs);
|
||||
|
||||
Table *table = new Table (false);
|
||||
table->setStyle (tableStyle);
|
||||
layout->setWidget (table);
|
||||
|
||||
tableStyle->unref();
|
||||
|
||||
styleAttrs.borderWidth.setVal (1);
|
||||
styleAttrs.setBorderStyle (BORDER_INSET);
|
||||
|
||||
Style *cellStyle = Style::create (&styleAttrs);
|
||||
|
||||
styleAttrs.borderWidth.setVal (0);
|
||||
styleAttrs.margin.setVal (0);
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.cursor = CURSOR_TEXT;
|
||||
styleAttrs.textAlignChar = '.';
|
||||
|
||||
Style *wordStyle = Style::create (&styleAttrs);
|
||||
|
||||
AlignedTableCell *ref = NULL;
|
||||
for(int i = 0; i < 10; i++) {
|
||||
//for(int i = 0; i < 1; i++) {
|
||||
AlignedTableCell *cell = new AlignedTableCell (ref, false);
|
||||
cell->setStyle (cellStyle);
|
||||
ref = cell;
|
||||
table->addRow (wordStyle);
|
||||
table->addCell (cell, 1, 1);
|
||||
|
||||
char buf[16];
|
||||
for(int j = 0; j < i; j++)
|
||||
buf[j] = '0' + j;
|
||||
buf[i] = '.';
|
||||
for(int j = i + 1; j < 11; j++)
|
||||
buf[j] = '0' + (j - 1);
|
||||
buf[11] = 0;
|
||||
|
||||
cell->addText (buf, wordStyle);
|
||||
cell->flush ();
|
||||
}
|
||||
|
||||
wordStyle->unref();
|
||||
cellStyle->unref();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
246
test/dw/dw_ui_test.cc
Normal file
246
test/dw/dw_ui_test.cc
Normal file
@ -0,0 +1,246 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
* Copyright 2023 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/fltkcore.hh"
|
||||
#include "dw/fltkviewport.hh"
|
||||
#include "dw/table.hh"
|
||||
#include "dw/textblock.hh"
|
||||
#include "dw/ui.hh"
|
||||
#include "form.hh"
|
||||
|
||||
using namespace lout::object;
|
||||
using namespace lout::container::typed;
|
||||
using namespace dw;
|
||||
using namespace dw::core;
|
||||
using namespace dw::core::style;
|
||||
using namespace dw::core::ui;
|
||||
using namespace dw::fltk;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FltkPlatform *platform = new FltkPlatform ();
|
||||
Layout *layout = new Layout (platform);
|
||||
|
||||
Fl_Window *window = new Fl_Window(400, 400, "Dw UI Test");
|
||||
window->box(FL_NO_BOX);
|
||||
window->begin();
|
||||
|
||||
FltkViewport *viewport = new FltkViewport (0, 0, 400, 400);
|
||||
layout->attachView (viewport);
|
||||
|
||||
StyleAttrs styleAttrs;
|
||||
styleAttrs.initValues ();
|
||||
styleAttrs.margin.setVal (5);
|
||||
styleAttrs.color = Color::create (layout, 0x000000);
|
||||
styleAttrs.backgroundColor = Color::create (layout, 0xffffff);
|
||||
|
||||
FontAttrs fontAttrs;
|
||||
fontAttrs.name = "Helvetica";
|
||||
fontAttrs.size = 14;
|
||||
fontAttrs.weight = 400;
|
||||
fontAttrs.style = FONT_STYLE_NORMAL;
|
||||
fontAttrs.letterSpacing = 0;
|
||||
fontAttrs.fontVariant = FONT_VARIANT_NORMAL;
|
||||
styleAttrs.font = dw::core::style::Font::create (layout, &fontAttrs);
|
||||
|
||||
Style *tableStyle = Style::create (&styleAttrs);
|
||||
|
||||
Table *table = new Table (false);
|
||||
table->setStyle (tableStyle);
|
||||
layout->setWidget (table);
|
||||
|
||||
tableStyle->unref();
|
||||
|
||||
styleAttrs.backgroundColor = NULL;
|
||||
styleAttrs.margin.setVal (0);
|
||||
|
||||
Style *cellStyle = Style::create (&styleAttrs);
|
||||
|
||||
// First of all, the resources. Later, they are embedded into the
|
||||
// widget tree.
|
||||
EntryResource *entryres1 =
|
||||
layout->getResourceFactory()->createEntryResource (10, false, NULL,NULL);
|
||||
entryres1->setText ("Hi!");
|
||||
EntryResource *entryres2 =
|
||||
layout->getResourceFactory()->createEntryResource (10, true, NULL,
|
||||
"password field!");
|
||||
MultiLineTextResource *textres =
|
||||
layout->getResourceFactory()->createMultiLineTextResource (15,3,
|
||||
"textarea placeholder!");
|
||||
RadioButtonResource *radiores1 =
|
||||
layout->getResourceFactory()->createRadioButtonResource (NULL, false);
|
||||
RadioButtonResource *radiores2 =
|
||||
layout->getResourceFactory()->createRadioButtonResource (radiores1,
|
||||
false);
|
||||
CheckButtonResource *checkres =
|
||||
layout->getResourceFactory()->createCheckButtonResource (true);
|
||||
SelectionResource *selres[2];
|
||||
selres[0] = layout->getResourceFactory()->createOptionMenuResource ();
|
||||
selres[1] = layout->getResourceFactory()->createListResource
|
||||
(ListResource::SELECTION_AT_MOST_ONE, 4);
|
||||
LabelButtonResource *buttonres =
|
||||
layout->getResourceFactory()->createLabelButtonResource ("Run!");
|
||||
|
||||
// Note on complex buttons: before any operations on the widget, which
|
||||
// need a layout, the complex button resource should be created, since
|
||||
// then, a layout and a platform are instantiated.
|
||||
Textblock *cbuttontext = new Textblock(false);
|
||||
ComplexButtonResource *cbuttonres =
|
||||
layout->getResourceFactory()->createComplexButtonResource (cbuttontext,
|
||||
true);
|
||||
cbuttontext->setStyle (cellStyle);
|
||||
cbuttontext->addText ("Run (complex)!", cellStyle);
|
||||
cbuttontext->flush ();
|
||||
|
||||
// The entry resources are put into a special handler, which is
|
||||
// also a receiver for the button resources.
|
||||
form::Form *form = new form::Form();
|
||||
form->addTextResource ("val1", entryres1);
|
||||
form->addTextResource ("val2", entryres2);
|
||||
form->addTextResource ("text", textres);
|
||||
const char *radiovalues[] = { "radio1", "radio2", NULL };
|
||||
form->addRadioButtonResource ("val3", radiores1, radiovalues);
|
||||
form->addCheckButtonResource ("check", checkres);
|
||||
const char *selvalues[] = { "i1", "g1", "i11", "i12", "i13", "(pop)", "i2",
|
||||
"g2", "i21", "i22", "i23", "(pop)", "i3", NULL};
|
||||
form->addSelectionResource ("val4", selres[0], selvalues);
|
||||
form->addSelectionResource ("val5", selres[1], selvalues);
|
||||
form->addButtonResource ("button", buttonres, "Run!");
|
||||
form->addButtonResource ("cbutton", cbuttonres, "cbuttonval");
|
||||
|
||||
// Create the widgets.
|
||||
table->addRow (cellStyle);
|
||||
|
||||
Textblock *label1 = new Textblock(false);
|
||||
label1->setStyle (cellStyle);
|
||||
table->addCell (label1, 1, 1);
|
||||
label1->addText ("val1 = ", cellStyle);
|
||||
label1->flush ();
|
||||
|
||||
Embed *input1 = new Embed (entryres1);
|
||||
input1->setStyle (cellStyle);
|
||||
table->addCell (input1, 1, 1);
|
||||
|
||||
table->addRow (cellStyle);
|
||||
|
||||
Textblock *label2 = new Textblock(false);
|
||||
label2->setStyle (cellStyle);
|
||||
table->addCell (label2, 1, 1);
|
||||
label2->addText ("val2 = ", cellStyle);
|
||||
label2->flush ();
|
||||
|
||||
Embed *input2 = new Embed (entryres2);
|
||||
input2->setStyle (cellStyle);
|
||||
table->addCell (input2, 1, 1);
|
||||
|
||||
table->addRow (cellStyle);
|
||||
|
||||
Textblock *label = new Textblock(false);
|
||||
label->setStyle (cellStyle);
|
||||
table->addCell (label, 1, 1);
|
||||
label->addText ("text = ", cellStyle);
|
||||
label->flush ();
|
||||
|
||||
Embed *text = new Embed (textres);
|
||||
textres->setText("Hi textarea");
|
||||
text->setStyle (cellStyle);
|
||||
table->addCell (text, 1, 1);
|
||||
|
||||
table->addRow (cellStyle);
|
||||
|
||||
Textblock *radiolabel1 = new Textblock(false);
|
||||
radiolabel1->setStyle (cellStyle);
|
||||
table->addCell (radiolabel1, 2, 1);
|
||||
Embed *radio1 = new Embed (radiores1);
|
||||
radiolabel1->addWidget (radio1, cellStyle);
|
||||
radiolabel1->addText (" radio1", cellStyle);
|
||||
radiolabel1->flush ();
|
||||
|
||||
table->addRow (cellStyle);
|
||||
Textblock *radiolabel2 = new Textblock(false);
|
||||
radiolabel2->setStyle (cellStyle);
|
||||
table->addCell (radiolabel2, 2, 1);
|
||||
Embed *radio2 = new Embed (radiores2);
|
||||
radiolabel2->addWidget (radio2, cellStyle);
|
||||
radiolabel2->addText (" radio2", cellStyle);
|
||||
radiolabel2->flush ();
|
||||
|
||||
table->addRow (cellStyle);
|
||||
Textblock *checklabel = new Textblock(false);
|
||||
checklabel->setStyle (cellStyle);
|
||||
table->addCell (checklabel, 2, 1);
|
||||
Embed *check = new Embed (checkres);
|
||||
checklabel->addWidget (check, cellStyle);
|
||||
checklabel->addText (" check", cellStyle);
|
||||
checklabel->flush ();
|
||||
|
||||
for(int i = 0; i < 2; i++) {
|
||||
table->addRow (cellStyle);
|
||||
|
||||
Embed *sel = new Embed (selres[i]);
|
||||
sel->setStyle (cellStyle);
|
||||
table->addCell (sel, 2, 1);
|
||||
|
||||
selres[i]->addItem("item 1", true, false);
|
||||
|
||||
selres[i]->pushGroup("group 1", true);
|
||||
selres[i]->addItem("item 1/1", true, false);
|
||||
selres[i]->addItem("item 1/2", true, true);
|
||||
selres[i]->addItem("item 1/3", false, false);
|
||||
selres[i]->popGroup();
|
||||
|
||||
selres[i]->addItem("item 2", false, i == 1);
|
||||
|
||||
selres[i]->pushGroup("group 2", true);
|
||||
selres[i]->addItem("item 2/1", true, false);
|
||||
selres[i]->addItem("item 2/2", true, false);
|
||||
selres[i]->addItem("item 2/3", false, false);
|
||||
selres[i]->popGroup();
|
||||
|
||||
selres[i]->addItem("item 3", false, false);
|
||||
}
|
||||
|
||||
table->addRow (cellStyle);
|
||||
Embed *button = new Embed (buttonres);
|
||||
button->setStyle (cellStyle);
|
||||
table->addCell (button, 2, 1);
|
||||
|
||||
table->addRow (cellStyle);
|
||||
Embed *cbutton = new Embed (cbuttonres);
|
||||
cbutton->setStyle (cellStyle);
|
||||
table->addCell (cbutton, 2, 1);
|
||||
|
||||
cellStyle->unref();
|
||||
|
||||
window->resizable(viewport);
|
||||
window->show();
|
||||
int errorCode = Fl::run();
|
||||
|
||||
delete form;
|
||||
delete layout;
|
||||
|
||||
return errorCode;
|
||||
}
|
||||
264
test/dw/form.cc
Normal file
264
test/dw/form.cc
Normal file
@ -0,0 +1,264 @@
|
||||
/*
|
||||
* Dillo Widget
|
||||
*
|
||||
* Copyright 2005-2007 Sebastian Geerken <sgeerken@dillo.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "form.hh"
|
||||
#include "dlib/dlib.h"
|
||||
|
||||
namespace form {
|
||||
|
||||
using namespace dw::core::ui;
|
||||
|
||||
Form::ResourceDecorator::ResourceDecorator (const char *name)
|
||||
{
|
||||
this->name = dStrdup (name);
|
||||
}
|
||||
|
||||
Form::ResourceDecorator::~ResourceDecorator ()
|
||||
{
|
||||
free((char *)name);
|
||||
}
|
||||
|
||||
Form::TextResourceDecorator::TextResourceDecorator (const char *name,
|
||||
TextResource *resource):
|
||||
Form::ResourceDecorator (name)
|
||||
{
|
||||
this->resource = resource;
|
||||
}
|
||||
|
||||
const char *Form::TextResourceDecorator::getValue ()
|
||||
{
|
||||
return resource->getText ();
|
||||
}
|
||||
|
||||
Form::RadioButtonResourceDecorator::RadioButtonResourceDecorator
|
||||
(const char *name, RadioButtonResource *resource, const char **values):
|
||||
Form::ResourceDecorator (name)
|
||||
{
|
||||
this->resource = resource;
|
||||
|
||||
int n = 0;
|
||||
while (values[n])
|
||||
n++;
|
||||
this->values = new const char*[n + 1];
|
||||
for (int i = 0; i < n; i++)
|
||||
this->values[i] = dStrdup (values[i]);
|
||||
this->values[n] = 0;
|
||||
}
|
||||
|
||||
Form::RadioButtonResourceDecorator::~RadioButtonResourceDecorator ()
|
||||
{
|
||||
for (int i = 0; values[i]; i++)
|
||||
free((char *)values[i]);
|
||||
delete[] values;
|
||||
}
|
||||
|
||||
const char *Form::RadioButtonResourceDecorator::getValue ()
|
||||
{
|
||||
RadioButtonResource::GroupIterator *it;
|
||||
int i;
|
||||
for (it = resource->groupIterator (), i = 0; it->hasNext (); i++) {
|
||||
RadioButtonResource *resource = it->getNext ();
|
||||
if(resource->isActivated ()) {
|
||||
it->unref ();
|
||||
return values[i];
|
||||
}
|
||||
}
|
||||
|
||||
it->unref ();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Form::CheckButtonResourceDecorator::CheckButtonResourceDecorator
|
||||
(const char *name, CheckButtonResource *resource):
|
||||
Form::ResourceDecorator (name)
|
||||
{
|
||||
this->resource = resource;
|
||||
}
|
||||
|
||||
const char *Form::CheckButtonResourceDecorator::getValue ()
|
||||
{
|
||||
return resource->isActivated () ? "true" : NULL;
|
||||
}
|
||||
|
||||
Form::SelectionResourceDecorator::SelectionResourceDecorator
|
||||
(const char *name, SelectionResource *resource, const char **values):
|
||||
Form::ResourceDecorator (name)
|
||||
{
|
||||
this->resource = resource;
|
||||
|
||||
int n = 0;
|
||||
while (values[n])
|
||||
n++;
|
||||
this->values = new const char*[n + 1];
|
||||
for(int i = 0; i < n; i++)
|
||||
this->values[i] = dStrdup (values[i]);
|
||||
this->values[n] = 0;
|
||||
}
|
||||
|
||||
Form::SelectionResourceDecorator::~SelectionResourceDecorator ()
|
||||
{
|
||||
for(int i = 0; values[i]; i++)
|
||||
free((char *)values[i]);
|
||||
delete[] values;
|
||||
}
|
||||
|
||||
const char *Form::SelectionResourceDecorator::getValue ()
|
||||
{
|
||||
valueBuf.clear();
|
||||
int n = resource->getNumberOfItems ();
|
||||
bool first = true;
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (resource->isSelected (i)) {
|
||||
if (!first)
|
||||
valueBuf.append (", ");
|
||||
valueBuf.append (values[i]);
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
|
||||
return valueBuf.getChars ();
|
||||
}
|
||||
|
||||
void Form::FormActivateReceiver::activate (Resource *resource)
|
||||
{
|
||||
form->send (NULL, NULL, -1, -1);
|
||||
}
|
||||
|
||||
void Form::FormActivateReceiver::enter (Resource *resource)
|
||||
{
|
||||
}
|
||||
|
||||
void Form::FormActivateReceiver::leave (Resource *resource)
|
||||
{
|
||||
}
|
||||
|
||||
Form::FormClickedReceiver::FormClickedReceiver (Form *form, const char *name,
|
||||
const char *value)
|
||||
{
|
||||
this->form = form;
|
||||
this->name = dStrdup (name);
|
||||
this->value = dStrdup (value);
|
||||
}
|
||||
|
||||
Form::FormClickedReceiver::~FormClickedReceiver ()
|
||||
{
|
||||
free((char *)name);
|
||||
free((char *)value);
|
||||
}
|
||||
|
||||
void Form::FormClickedReceiver::clicked (Resource *resource,
|
||||
dw::core::EventButton *event)
|
||||
{
|
||||
form->send (name, value, event->xCanvas, event->yCanvas);
|
||||
}
|
||||
|
||||
Form::Form ()
|
||||
{
|
||||
resources = new lout::container::typed::List <ResourceDecorator> (true);
|
||||
activateReceiver = new FormActivateReceiver (this);
|
||||
clickedReceivers =
|
||||
new lout::container::typed::List <FormClickedReceiver> (true);
|
||||
}
|
||||
|
||||
Form::~Form ()
|
||||
{
|
||||
delete resources;
|
||||
delete activateReceiver;
|
||||
delete clickedReceivers;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Adds an instance of dw::core::ui::TextResource.
|
||||
*/
|
||||
void Form::addTextResource (const char *name,
|
||||
dw::core::ui::TextResource *resource)
|
||||
{
|
||||
resources->append (new TextResourceDecorator (name, resource));
|
||||
resource->connectActivate (activateReceiver);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Adds an instance of dw::core::ui::RadioButtonResource.
|
||||
*
|
||||
* This method has to be called only once for a group of radio buttons.
|
||||
*/
|
||||
void Form::addRadioButtonResource (const char *name,
|
||||
dw::core::ui::RadioButtonResource *resource,
|
||||
const char **values)
|
||||
{
|
||||
resources->append (new RadioButtonResourceDecorator (name, resource,
|
||||
values));
|
||||
resource->connectActivate (activateReceiver);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Adds an instance of dw::core::ui::CheckButtonResource.
|
||||
*/
|
||||
void Form::addCheckButtonResource (const char *name,
|
||||
dw::core::ui::CheckButtonResource *resource)
|
||||
{
|
||||
resources->append (new CheckButtonResourceDecorator (name, resource));
|
||||
resource->connectActivate (activateReceiver);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Adds an instance of dw::core::ui::SelectionResource.
|
||||
*/
|
||||
void Form::addSelectionResource (const char *name,
|
||||
dw::core::ui::SelectionResource *resource,
|
||||
const char **values)
|
||||
{
|
||||
resources->append (new SelectionResourceDecorator (name, resource, values));
|
||||
resource->connectActivate (activateReceiver);
|
||||
}
|
||||
|
||||
/**
|
||||
* \todo Comment this;
|
||||
*/
|
||||
void Form::addButtonResource (const char *name,
|
||||
dw::core::ui::ButtonResource *resource,
|
||||
const char *value)
|
||||
{
|
||||
FormClickedReceiver *receiver =
|
||||
new FormClickedReceiver (this, name, value);
|
||||
resource->connectClicked (receiver);
|
||||
clickedReceivers->append (receiver);
|
||||
}
|
||||
|
||||
/**
|
||||
* \todo Comment this;
|
||||
*/
|
||||
void Form::send (const char *buttonName, const char *buttonValue, int x, int y)
|
||||
{
|
||||
for (lout::container::typed::Iterator <ResourceDecorator> it =
|
||||
resources->iterator ();
|
||||
it.hasNext (); ) {
|
||||
ResourceDecorator *resource = it.getNext ();
|
||||
const char *value = resource->getValue ();
|
||||
if (value)
|
||||
printf ("%s = %s; x=%d y=%d\n", resource->getName (), value, x, y);
|
||||
}
|
||||
|
||||
if(buttonName && buttonValue)
|
||||
printf ("%s = %s\n", buttonName, buttonValue);
|
||||
}
|
||||
|
||||
} // namespace form
|
||||
164
test/dw/form.hh
Normal file
164
test/dw/form.hh
Normal file
@ -0,0 +1,164 @@
|
||||
#ifndef __TEST_FORM_HH__
|
||||
#define __TEST_FORM_HH__
|
||||
|
||||
#include "dw/core.hh"
|
||||
#include "dw/ui.hh"
|
||||
|
||||
namespace form {
|
||||
|
||||
/**
|
||||
* \brief Handles HTML form data.
|
||||
*
|
||||
* Add resources by calling the respective add...Resource method. Furthermore,
|
||||
* this class implements dw::core::ui::ButtonResource::ClickedReceiver, the
|
||||
* form data is printed to stdout, when the "clicked" signal is received.
|
||||
*
|
||||
* \todo wrong comment
|
||||
*/
|
||||
class Form
|
||||
{
|
||||
private:
|
||||
/**
|
||||
* \brief Decorates instances of dw::core::ui::Resource.
|
||||
*
|
||||
* This is the abstract base class, sub classes have to be defined to
|
||||
* decorate specific sub interfaces of dw::core::ui::Resource.
|
||||
*/
|
||||
class ResourceDecorator: public lout::object::Object
|
||||
{
|
||||
private:
|
||||
const char *name;
|
||||
|
||||
protected:
|
||||
ResourceDecorator (const char *name);
|
||||
~ResourceDecorator ();
|
||||
|
||||
public:
|
||||
inline const char *getName () { return name; }
|
||||
virtual const char *getValue () = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Decorates instances of dw::core::ui::TextResource.
|
||||
*/
|
||||
class TextResourceDecorator: public ResourceDecorator
|
||||
{
|
||||
private:
|
||||
dw::core::ui::TextResource *resource;
|
||||
|
||||
public:
|
||||
TextResourceDecorator (const char *name,
|
||||
dw::core::ui::TextResource *resource);
|
||||
const char *getValue ();
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Decorates instances of dw::core::ui::RadioButtonResource.
|
||||
*
|
||||
* This class has to be instantiated only once for a group of radio
|
||||
* buttons.
|
||||
*/
|
||||
class RadioButtonResourceDecorator: public ResourceDecorator
|
||||
{
|
||||
private:
|
||||
dw::core::ui::RadioButtonResource *resource;
|
||||
const char **values;
|
||||
|
||||
public:
|
||||
RadioButtonResourceDecorator (const char *name,
|
||||
dw::core::ui::RadioButtonResource
|
||||
*resource,
|
||||
const char **values);
|
||||
~RadioButtonResourceDecorator ();
|
||||
const char *getValue ();
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Decorates instances of dw::core::ui::CheckButtonResource.
|
||||
*/
|
||||
class CheckButtonResourceDecorator: public ResourceDecorator
|
||||
{
|
||||
private:
|
||||
dw::core::ui::CheckButtonResource *resource;
|
||||
|
||||
public:
|
||||
CheckButtonResourceDecorator (const char *name,
|
||||
dw::core::ui::CheckButtonResource
|
||||
*resource);
|
||||
const char *getValue ();
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Decorates instances of dw::core::ui::SelectionResource.
|
||||
*/
|
||||
class SelectionResourceDecorator: public ResourceDecorator
|
||||
{
|
||||
private:
|
||||
dw::core::ui::SelectionResource *resource;
|
||||
const char **values;
|
||||
lout::misc::StringBuffer valueBuf;
|
||||
|
||||
public:
|
||||
SelectionResourceDecorator (const char *name,
|
||||
dw::core::ui::SelectionResource *resource,
|
||||
const char **values);
|
||||
~SelectionResourceDecorator ();
|
||||
const char *getValue ();
|
||||
};
|
||||
|
||||
class FormActivateReceiver: public dw::core::ui::Resource::ActivateReceiver
|
||||
{
|
||||
private:
|
||||
Form *form;
|
||||
|
||||
public:
|
||||
inline FormActivateReceiver (Form *form) { this->form = form; }
|
||||
|
||||
void activate (dw::core::ui::Resource *resource);
|
||||
void enter (dw::core::ui::Resource *resource);
|
||||
void leave (dw::core::ui::Resource *resource);
|
||||
};
|
||||
|
||||
class FormClickedReceiver:
|
||||
public dw::core::ui::Resource::ClickedReceiver
|
||||
{
|
||||
private:
|
||||
Form *form;
|
||||
const char *name, *value;
|
||||
|
||||
public:
|
||||
FormClickedReceiver (Form *form, const char *name, const char *value);
|
||||
~FormClickedReceiver ();
|
||||
|
||||
void clicked(dw::core::ui::Resource *resource,
|
||||
dw::core::EventButton *event);
|
||||
};
|
||||
|
||||
lout::container::typed::List <ResourceDecorator> *resources;
|
||||
FormActivateReceiver *activateReceiver;
|
||||
lout::container::typed::List <FormClickedReceiver> *clickedReceivers;
|
||||
|
||||
public:
|
||||
Form ();
|
||||
~Form ();
|
||||
|
||||
void addTextResource (const char *name,
|
||||
dw::core::ui::TextResource *resource);
|
||||
void addRadioButtonResource (const char *name,
|
||||
dw::core::ui::RadioButtonResource *resource,
|
||||
const char **values);
|
||||
void addCheckButtonResource (const char *name,
|
||||
dw::core::ui::CheckButtonResource *resource);
|
||||
void addSelectionResource (const char *name,
|
||||
dw::core::ui::SelectionResource *resource,
|
||||
const char **values);
|
||||
void addButtonResource (const char *name,
|
||||
dw::core::ui::ButtonResource *resource,
|
||||
const char *value);
|
||||
|
||||
void send (const char *buttonName, const char *buttonValue, int x, int y);
|
||||
};
|
||||
|
||||
} // namespace form
|
||||
|
||||
#endif // __TEST_FORM_HH__
|
||||
57
test/html/Makefile.am
Normal file
57
test/html/Makefile.am
Normal file
@ -0,0 +1,57 @@
|
||||
AM_TESTS_ENVIRONMENT = env \
|
||||
TOP_BUILDDIR='$(top_builddir)' \
|
||||
TOP_SRCDIR='$(top_srcdir)' \
|
||||
BUILDDIR='$(builddir)'
|
||||
|
||||
LOG_COMPILER = $(srcdir)/driver.sh
|
||||
|
||||
EXTRA_DIST = \
|
||||
driver.sh \
|
||||
manual \
|
||||
render
|
||||
|
||||
TESTS = \
|
||||
render/b-div.html \
|
||||
render/div-100-percent-with-padding.html \
|
||||
render/float-img-justify.html \
|
||||
render/github-infinite-loop.html \
|
||||
render/hackernews.html \
|
||||
render/img-aspect-ratio-absolute.html \
|
||||
render/img-aspect-ratio-div.html \
|
||||
render/img-aspect-ratio-mix-border.html \
|
||||
render/img-aspect-ratio-mix-margin.html \
|
||||
render/img-aspect-ratio-mix.html \
|
||||
render/img-aspect-ratio-relative-inside-fixed.html \
|
||||
render/img-aspect-ratio.html \
|
||||
render/main-style.html \
|
||||
render/margin-auto.html \
|
||||
render/max-width-body.html \
|
||||
render/max-width-div-clamp.html \
|
||||
render/max-width-div.html \
|
||||
render/max-width-html.html \
|
||||
render/max-width-nested-div.html \
|
||||
render/meta-refresh-0-no-url.html \
|
||||
render/min-width-body.html \
|
||||
render/min-width-div-extend.html \
|
||||
render/min-width-div.html \
|
||||
render/min-width-html.html \
|
||||
render/min-width-nested-div.html \
|
||||
render/span-padding.html \
|
||||
render/svg-current-color.html \
|
||||
render/table-max-width.html \
|
||||
render/table-missing-width-in-one-column.html \
|
||||
render/table-td-width-percent-img.html \
|
||||
render/table-td-width-percent.html \
|
||||
render/table-thead-tfoot.html \
|
||||
render/table-thead-tfoot-open-tag.html \
|
||||
render/white-space.html
|
||||
|
||||
# To be fixed
|
||||
XFAIL_TESTS = \
|
||||
render/div-100-percent-with-padding.html \
|
||||
render/float-img-justify.html \
|
||||
render/margin-auto.html \
|
||||
render/max-width-html.html \
|
||||
render/min-width-html.html \
|
||||
render/span-padding.html \
|
||||
render/table-td-width-percent.html
|
||||
107
test/html/driver.sh
Executable file
107
test/html/driver.sh
Executable file
@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# File: driver.sh
|
||||
#
|
||||
# Copyright (C) 2023-2024 Rodrigo Arias Mallo <rodarima@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
DILLOBIN=${DILLOBIN:-$TOP_BUILDDIR/src/dillo}
|
||||
|
||||
if [ ! -e $DILLOBIN ]; then
|
||||
echo missing dillo binary, set DILLOBIN with the path to dillo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
magick_bin="convert"
|
||||
if command -v magick 2>&1 >/dev/null; then
|
||||
magick_bin="magick"
|
||||
fi
|
||||
|
||||
function render_page() {
|
||||
htmlfile="$1"
|
||||
outpic="$2"
|
||||
|
||||
"$DILLOBIN" -f "$htmlfile" &
|
||||
dillopid=$!
|
||||
|
||||
# TODO: We need a better system to determine when the page loaded
|
||||
sleep 1
|
||||
|
||||
# Capture only Dillo window
|
||||
winid=$(xwininfo -all -root | awk '/Dillo:/ {print $1}')
|
||||
if [ -z "$winid" ]; then
|
||||
echo "cannot find Dillo window" >&2
|
||||
exit 1
|
||||
fi
|
||||
xwd -id "$winid" -silent | ${magick_bin} xwd:- png:${outpic}
|
||||
|
||||
kill "$dillopid"
|
||||
}
|
||||
|
||||
function test_file() {
|
||||
html_file="$1"
|
||||
|
||||
if [ ! -e "$html_file" ]; then
|
||||
echo "missing test file: $html_file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ref_file="${html_file%.html}.ref.html"
|
||||
if [ ! -e "$ref_file" ]; then
|
||||
echo "missing reference file: $ref_file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test_name=$(basename "$html_file")
|
||||
wdir="${test_name}_wdir"
|
||||
|
||||
# Clean any previous files
|
||||
rm -rf "$wdir"
|
||||
mkdir -p "$wdir"
|
||||
|
||||
# Use a FIFO to read the display number
|
||||
mkfifo "$wdir/display.fifo"
|
||||
exec 6<> "$wdir/display.fifo"
|
||||
Xvfb -screen 5 1024x768x24 -displayfd 6 &
|
||||
xorgpid=$!
|
||||
|
||||
# Always kill Xvfb on exit
|
||||
trap "kill $xorgpid" EXIT
|
||||
|
||||
read dispnum < "$wdir/display.fifo"
|
||||
export DISPLAY=":$dispnum"
|
||||
|
||||
render_page "$html_file" "$wdir/html.png"
|
||||
render_page "$ref_file" "$wdir/ref.png"
|
||||
|
||||
# AE = Absolute Error count of the number of different pixels
|
||||
diffcount=$(compare -metric AE "$wdir/html.png" "$wdir/ref.png" "$wdir/diff.png" 2>&1 || true)
|
||||
|
||||
# The test passes only if both images are identical
|
||||
if [ "$diffcount" = "0" ]; then
|
||||
echo "OK"
|
||||
ret=0
|
||||
else
|
||||
echo "FAIL"
|
||||
ret=1
|
||||
fi
|
||||
|
||||
exec 6>&-
|
||||
rm "$wdir/display.fifo"
|
||||
|
||||
if [ -z "$DILLO_TEST_LEAVE_FILES" ]; then
|
||||
rm -rf "$wdir"
|
||||
fi
|
||||
|
||||
return $ret
|
||||
}
|
||||
|
||||
test_file "$1"
|
||||
exit $?
|
||||
25
test/html/manual/Anna_Karenina_1.html
Normal file
25
test/html/manual/Anna_Karenina_1.html
Normal file
@ -0,0 +1,25 @@
|
||||
<div lang="ru" style="text-indent: 0.7cm; text-align: justify">
|
||||
<p>Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему.</p>
|
||||
<p>Все смешалось в доме Облонских. Жена узнала, что муж был в связи с бывшею в их доме француженкою-гувернанткой, и объявила мужу, что не может жить с ним в одном доме. Положение это продолжалось уже третий день и мучительно чувствовалось и самими супругами, и всеми членами семьи, и домочадцами. Все члены семьи и домочадцы чувствовали, что нет смысла в их сожительстве и что на каждом постоялом дворе случайно сошедшиеся люди более связаны между собой, чем они, члены семьи и домочадцы Облонских. Жена не выходила из своих комнат, мужа третий день не было дома. Дети бегали по всему дому, как потерянные; англичанка поссорилась с экономкой и написала записку приятельнице, прося приискать ей новое место; повар ушел вчера со двора, во время самого обеда; черная кухарка и кучер просили расчета.</p>
|
||||
<p>На третий день после ссоры князь Степан Аркадьич Облонский — Стива, как его звали в свете, — в обычный час, то есть в восемь часов утра, проснулся не в спальне жены, а в своем кабинете, на сафьянном диване. Он повернул свое полное, выхоленное тело на пружинах дивана, как бы желая опять заснуть надолго, с другой стороны крепко обнял подушку и прижался к ней щекой; но вдруг вскочил, сел на диван и открыл глаза.</p>
|
||||
<p>«Да, да, как это было? — думал он, вспоминая сон. — Да,
|
||||
как это было? Да! Алабин давал обед в Дармштадте; нет, не в
|
||||
Дармштадте, а что-то американское. Да, но там Дармштадт был в
|
||||
Америке. Да, Алабин давал обед на стеклянных столах, да, — и
|
||||
столы пели: <span lang="it">Il mio tesoro</span>, и
|
||||
не <span lang="it">Il mio tesoro</span>, а что-то лучше, и какие-то
|
||||
маленькие графинчики, и они же женщины», — вспоминал он.</p>
|
||||
|
||||
<p>Глаза Степана Аркадьича весело заблестели, и он задумался, улыбаясь. «Да, хорошо было, очень хорошо. Много еще что-то там было отличного, да не скажешь словами и мыслями даже наяву не выразишь». И, заметив полосу света, пробившуюся сбоку одной из суконных стор, он весело скинул ноги с дивана, отыскал ими шитые женой (подарок ко дню рождения в прошлом году), обделанные в золотистый сафьян туфли и по старой, девятилетней привычке, не вставая, потянулся рукой к тому месту, где в спальне у него висел халат. И тут он вспомнил вдруг, как и почему он спит не в спальне жены, а в кабинете; улыбка исчезла с его лица, он сморщил лоб.</p>
|
||||
<p>«Ах, ах, ах! Ааа!..» — замычал он, вспоминая все, что было. И его воображению представились опять все подробности ссоры с женою, вся безвыходность его положения и мучительнее всего собственная вина его.</p>
|
||||
<p>«Да! она не простит и не может простить. И всего ужаснее то, что виной всему я, виной я, а не виноват. В этом-то вся драма, — думал он. — Ах, ах, ах!» — приговаривал он с отчаянием, вспоминая самые тяжелые для себя впечатления из этой ссоры.</p>
|
||||
<p>Неприятнее всего была та первая минута, когда он, вернувшись из театра, веселым и довольным, с огромною грушей для жены в руке, не нашел жены в гостиной; к удивлению, не нашел ее и в кабинете и, наконец, увидал ее в спальне с несчастною, открывшею все, запиской в руке.</p>
|
||||
<p>Она, эта вечно озабоченная, и хлопотливая, и недалекая, какою он считал ее, Долли, неподвижно сидела с запиской в руке и с выражением ужаса, отчаяния и гнева смотрела на него.</p>
|
||||
<p>— Что это? это? — спрашивала она, указывая на записку.</p>
|
||||
|
||||
<p>И при этом воспоминании, как это часто бывает, мучало Степана Аркадьича не столько самое событие, сколько то, как он ответил на эти слова жены.</p>
|
||||
<p>С ним случилось в эту минуту то, что случается с людьми, когда они неожиданно уличены в чем-нибудь слишком постыдном. Он не сумел приготовить свое лицо к тому положению, в которое он становился пред женой после открытия его вины. Вместо того чтоб оскорбиться, отрекаться, оправдываться, просить прощения, оставаться даже равнодушным — все было бы лучше того, что он сделал! — его лицо совершенно невольно («рефлексы головного мозга», — подумал Степан Аркадьич, который любил физиологию), совершенно невольно вдруг улыбнулось привычною, доброю и потому глупою улыбкой.</p>
|
||||
<p>Эту глупую улыбку он не мог простить себе. Увидав эту улыбку, Долли вздрогнула, как от физической боли, разразилась, со свойственною ей горячностью, потоком жестоких слов и выбежала из комнаты. С тех пор она не хотела видеть мужа.</p>
|
||||
<p>«Всему виной эта глупая улыбка», — думал Степан Аркадьич.</p>
|
||||
<p>«Но что ж делать? что ж делать?» — с отчаянием говорил он себе и не находил ответа.</p>
|
||||
</div>
|
||||
56
test/html/manual/KHM1-shy.html
Normal file
56
test/html/manual/KHM1-shy.html
Normal file
@ -0,0 +1,56 @@
|
||||
<div style="text-align: justify">
|
||||
<p>In den al­ten Zei­ten, wo das Wün­schen noch
|
||||
ge­hol­fen hat, leb­te ein Kö­nig, des­sen
|
||||
Töch­ter wa­ren al­le schön, aber die jüng­ste war so
|
||||
schön, daß die Son­ne sel­ber, die doch so vie­les
|
||||
ge­se­hen hat, sich ver­wun­der­te so oft sie ihr
|
||||
ins Ge­sicht schien. Na­he bei dem Schlos­se des
|
||||
Kö­nigs lag ein gro­ßer dunk­ler Wald, und in dem
|
||||
Wal­de un­ter ei­ner al­ten Lin­de war ein
|
||||
Brun­nen: wenn nun der Tag recht heiß war, so ging das
|
||||
Kö­nigs­kind hin­aus in den Wald und setz­te sich an
|
||||
den Rand des küh­len Brun­nens: und wenn sie
|
||||
Lan­ge­wei­le hat­te, so nahm sie eine
|
||||
gol­de­ne Ku­gel, warf sie in die Hö­he und fieng sie
|
||||
wie­der; und das war ihr liebs­tes Spiel­werk.</p>
|
||||
<p>Nun trug es sich ein­mal zu, daß die gol­de­ne
|
||||
Ku­gel der Kön­igs­toch­ter nicht in ihr Händ­chen
|
||||
fiel, das sie in die Hö­he ge­hal­ten hat­te,
|
||||
son­dern vor­bei auf die Er­de schlug und
|
||||
ge­ra­de­zu ins Was­ser hin­ein roll­te. Die
|
||||
Kö­nigs­toch­ter folg­te ihr mit den Aug­en nach,
|
||||
aber die Ku­gel ver­schwand, und der Brun­nen war tief, so
|
||||
tief daß man kei­nen Grund sah. Da fieng sie an zu wei­nen und
|
||||
wein­te im­mer lau­ter und konn­te sich gar nicht
|
||||
trös­ten. Und wie sie so klag­te, rief ihr je­mand zu „was
|
||||
hast du vor, Kö­nigs­toch­ter, du schreist ja daß sich ein
|
||||
Stein er­bar­men möchte.“ Sie sah sich um, wo­her die
|
||||
Stim­me kä­me, da er­blick­te sie einen Frosch, der
|
||||
sei­nen di­cken häß­li­chen Kopf aus dem Was­ser
|
||||
streck­te. „Ach, du bists, al­ter
|
||||
Was­ser­pat­scher,“ sag­te sie, „ich wei­ne über
|
||||
mei­ne gol­de­ne Ku­gel, die mir in den Brun­nen
|
||||
hin­ab ge­fal­len ist.“ „Sei still und wei­ne nicht,“
|
||||
ant­wor­te­te der Frosch, „ich kann wohl Rath
|
||||
schaf­fen, aber was gibst du mir, wenn ich dein Spiel­werk
|
||||
wie­der her­auf­ho­le?“ „Was du ha­ben willst,
|
||||
lie­ber Frosch,“ sag­te sie, „mei­ne Klei­der,
|
||||
mei­ne Per­len und Edel­stei­ne, auch noch die
|
||||
gol­de­ne Kro­ne, die ich tra­ge.“ Der Frosch
|
||||
ant­wor­te­te „dei­ne Klei­der, dei­ne
|
||||
Per­len und Edel­stei­ne, und dei­ne gol­de­ne
|
||||
Kro­ne, die mag ich nicht: aber wenn du mich lieb ha­ben
|
||||
willst, und ich soll dein Ge­sel­le und
|
||||
Spiel­ka­me­rad sein, an dei­nem Tisch­lein
|
||||
ne­ben dir si­tzen, von dei­nem gol­de­nen
|
||||
Tel­ler­lein es­sen, aus dei­nem Be­cher­lein
|
||||
trin­ken, in dei­nem Bett­lein schla­fen: wenn du mir
|
||||
das ver­sprichst, so will ich hin­un­ter stei­gen und
|
||||
dir die gol­de­ne Ku­gel wie­der her­auf
|
||||
ho­len.“ „Ach ja,“ sag­te sie, „ich ver­spre­che dir
|
||||
alles, was du willst, wenn du mir nur die Ku­gel wie­der
|
||||
bringst.“ Sie dach­te aber „was der ein­fäl­ti­ge
|
||||
Frosch schwätzt, der sitzt im Was­ser bei sei­nes
|
||||
Glei­chen und quackt, und kann kei­nes Men­schen
|
||||
Ge­sel­le sein.“</p>
|
||||
</div>
|
||||
39
test/html/manual/KHM1.html
Normal file
39
test/html/manual/KHM1.html
Normal file
@ -0,0 +1,39 @@
|
||||
<div style="text-align: justify">
|
||||
<p>In den alten Zeiten, wo das Wünschen noch geholfen hat, lebte ein
|
||||
König, dessen Töchter waren alle schön, aber die jüngste war so schön,
|
||||
daß die Sonne selber, die doch so vieles gesehen hat, sich verwunderte
|
||||
so oft sie ihr ins Gesicht schien. Nahe bei dem Schlosse des Königs
|
||||
lag ein großer dunkler Wald, und in dem Walde unter einer alten Linde
|
||||
war ein Brunnen: wenn nun der Tag recht heiß war, so ging das
|
||||
Königskind hinaus in den Wald und setzte sich an den Rand des kühlen
|
||||
Brunnens: und wenn sie Langeweile hatte, so nahm sie eine goldene
|
||||
Kugel, warf sie in die Höhe und fieng sie wieder; und das war ihr
|
||||
liebstes Spielwerk.</p>
|
||||
<p>Nun trug es sich einmal zu, daß die goldene Kugel der Königstochter
|
||||
nicht in ihr Händchen fiel, das sie in die Höhe gehalten hatte,
|
||||
sondern vorbei auf die Erde schlug und geradezu ins Wasser hinein
|
||||
rollte. Die Königstochter folgte ihr mit den Augen nach, aber die
|
||||
Kugel verschwand, und der Brunnen war tief, so tief daß man keinen
|
||||
Grund sah. Da fieng sie an zu weinen und weinte immer lauter und
|
||||
konnte sich gar nicht trösten. Und wie sie so klagte, rief ihr jemand
|
||||
zu „was hast du vor, Königstochter, du schreist ja daß sich ein Stein
|
||||
erbarmen möchte.“ Sie sah sich um, woher die Stimme käme, da erblickte
|
||||
sie einen Frosch, der seinen dicken häßlichen Kopf aus dem Wasser
|
||||
streckte. „Ach, du bists, alter Wasserpatscher,“ sagte sie, „ich weine
|
||||
über meine goldene Kugel, die mir in den Brunnen hinab gefallen ist.“
|
||||
„Sei still und weine nicht,“ antwortete der Frosch, „ich kann wohl
|
||||
Rath schaffen, aber was gibst du mir, wenn ich dein Spielwerk wieder
|
||||
heraufhole?“ „Was du haben willst, lieber Frosch,“ sagte sie, „meine
|
||||
Kleider, meine Perlen und Edelsteine, auch noch die goldene Krone, die
|
||||
ich trage.“ Der Frosch antwortete „deine Kleider, deine Perlen und
|
||||
Edelsteine, und deine goldene Krone, die mag ich nicht: aber wenn du
|
||||
mich lieb haben willst, und ich soll dein Geselle und Spielkamerad
|
||||
sein, an deinem Tischlein neben dir sitzen, von deinem goldenen
|
||||
Tellerlein essen, aus deinem Becherlein trinken, in deinem Bettlein
|
||||
schlafen: wenn du mir das versprichst, so will ich hinunter steigen
|
||||
und dir die goldene Kugel wieder herauf holen.“ „Ach ja,“ sagte sie,
|
||||
„ich verspreche dir alles, was du willst, wenn du mir nur die Kugel
|
||||
wieder bringst.“ Sie dachte aber „was der einfältige Frosch schwätzt,
|
||||
der sitzt im Wasser bei seines Gleichen und quackt, und kann keines
|
||||
Menschen Geselle sein.“</p>
|
||||
</div>
|
||||
14
test/html/manual/KHM1b.html
Normal file
14
test/html/manual/KHM1b.html
Normal file
@ -0,0 +1,14 @@
|
||||
<p style="text-align: justify">In den al­ten Zei­ten, wo das
|
||||
Wün­schen noch ge­hol­fen hat, leb­te ein Kö­nig,
|
||||
des­sen Töch­ter wa­ren al­le schön, aber die
|
||||
jüng­ste war so schön, daß die Son­ne sel­ber, die doch so
|
||||
vie­les ge­se­hen hat, sich ver­wun­der­te so
|
||||
oft sie ihr ins Ge­sicht schien. Na­he bei dem Schlos­se
|
||||
des Kö­nigs lag ein gro­ßer dunk­ler Wald, und in dem
|
||||
Wal­de un­ter ei­ner al­ten Lin­de war ein
|
||||
Brun­nen: wenn nun der Tag recht heiß war, so ging das
|
||||
Kö­nigs­kind hin­aus in den Wald und setz­te sich an
|
||||
den Rand des küh­len Brun­nens: und wenn sie
|
||||
Lan­ge­wei­le hat­te, so nahm sie eine
|
||||
gol­de­ne Ku­gel, warf sie in die Hö­he und fieng sie
|
||||
wie­der; und das war ihr liebs­tes Spiel­werk.</p>
|
||||
10
test/html/manual/KHM1c.html
Normal file
10
test/html/manual/KHM1c.html
Normal file
@ -0,0 +1,10 @@
|
||||
<p style="text-align: justify">In den alten Zeiten, wo das Wünschen
|
||||
noch geholfen hat, lebte ein König, dessen Töchter waren alle schön,
|
||||
aber die jüngste war so schön, daß die Sonne selber, die doch so
|
||||
vieles gesehen hat, sich verwunderte so oft sie ihr ins Gesicht
|
||||
schien. Nahe bei dem Schlosse des Königs lag ein großer dunkler Wald,
|
||||
und in dem Walde unter einer alten Linde war ein Brunnen: wenn nun der
|
||||
Tag recht heiß war, so ging das Königskind hinaus in den Wald und
|
||||
setzte sich an den Rand des kühlen Brunnens: und wenn sie Langeweile
|
||||
hatte, so nahm sie eine goldene Kugel, warf sie in die Höhe und fieng
|
||||
sie wieder; und das war ihr liebstes Spielwerk.</p>
|
||||
650
test/html/manual/anchors.html
Normal file
650
test/html/manual/anchors.html
Normal file
@ -0,0 +1,650 @@
|
||||
<p lang="de"><a href="#unten">Nach
|
||||
unten</a>. Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung.
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung.
|
||||
<span id="unten"><b>Hier ist unten.</b> (Nicht ganz.)</span> Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung.
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung.
|
||||
</p>
|
||||
477
test/html/manual/doxygen.html
Normal file
477
test/html/manual/doxygen.html
Normal file
@ -0,0 +1,477 @@
|
||||
<!-- HTML header for doxygen 1.8.7-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>avr-libc: AVR Libc</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
<link href="dox.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td style="padding-left: 0.5em;">
|
||||
<div id="projectname">avr-libc
|
||||
 <span id="projectnumber">2.0.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">Standard C library for AVR-GCC</div>
|
||||
</td>
|
||||
<td> <div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<td align="left"><a href="http://www.nongnu.org/avr-libc/"><h2>AVR Libc Home Page</h2></a></td>
|
||||
<td align="center" colspan=4><img src="avrs.png" alt="AVRs" align="middle" border="0"></td>
|
||||
<td align="right"><a href="https://savannah.nongnu.org/projects/avr-libc/"><h2>AVR Libc Development Pages</h2></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="20%"><a href="index.html"><h2>Main Page</h2></a></td>
|
||||
<td align="center" width="20%"><a href="pages.html"><h2>User Manual</h2></a></td>
|
||||
<td align="center" width="20%"><a href="modules.html"><h2>Library Reference</h2></a></td>
|
||||
<td align="center" width="20%"><a href="FAQ.html"><h2>FAQ</h2></a></td>
|
||||
<td align="center" width="20%"><a href="group__demos.html"><h2>Example Projects</h2></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
</div><!-- top -->
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">AVR Libc </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><h1><a class="anchor" id="avr_libc_intro"></a>
|
||||
Introduction</h1>
|
||||
<p>The latest version of this document is always available from <a href="http://savannah.nongnu.org/projects/avr-libc/">http://savannah.nongnu.org/projects/avr-libc/</a></p>
|
||||
<p>The AVR Libc package provides a subset of the standard C library for <a href="http://www.atmel.com/products/AVR/">Atmel AVR 8-bit RISC microcontrollers</a>. In addition, the library provides the basic startup code needed by most applications.</p>
|
||||
<p>There is a wealth of information in this document which goes beyond simply describing the interfaces and routines provided by the library. We hope that this document provides enough information to get a new AVR developer up to speed quickly using the freely available development tools: binutils, gcc avr-libc and many others.</p>
|
||||
<p>If you find yourself stuck on a problem which this document doesn't quite address, you may wish to post a message to the avr-gcc mailing list. Most of the developers of the AVR binutils and gcc ports in addition to the developers of avr-libc subscribe to the list, so you will usually be able to get your problem resolved. You can subscribe to the list at <a href="http://lists.nongnu.org/mailman/listinfo/avr-gcc-list">http://lists.nongnu.org/mailman/listinfo/avr-gcc-list</a> . Before posting to the list, you might want to try reading the <a class="el" href="FAQ.html">Frequently Asked Questions</a> chapter of this document.</p>
|
||||
<dl class="section note"><dt>Note</dt><dd>If you think you've found a bug, or have a suggestion for an improvement, either in this documentation or in the library itself, please use the bug tracker at <a href="https://savannah.nongnu.org/bugs/?group=avr-libc">https://savannah.nongnu.org/bugs/?group=avr-libc</a> to ensure the issue won't be forgotten.</dd></dl>
|
||||
<h1><a class="anchor" id="avr_libc_general"></a>
|
||||
General information about this library</h1>
|
||||
<p>In general, it has been the goal to stick as best as possible to established standards while implementing this library. Commonly, this refers to the C library as described by the ANSI X3.159-1989 and ISO/IEC 9899:1990 ("ANSI-C") standard, as well as parts of their successor ISO/IEC 9899:1999 ("C99"). Some additions have been inspired by other standards like IEEE Std 1003.1-1988 ("POSIX.1"), while other extensions are purely AVR-specific (like the entire program-space string interface).</p>
|
||||
<p>Unless otherwise noted, functions of this library are <em>not</em> guaranteed to be reentrant. In particular, any functions that store local state are known to be non-reentrant, as well as functions that manipulate IO registers like the EEPROM access routines. If these functions are used within both standard and interrupt contexts undefined behaviour will result. See the FAQ for a more detailed discussion.</p>
|
||||
<h1><a class="anchor" id="supp_devices"></a>
|
||||
Supported Devices</h1>
|
||||
<p><a name="supported%20devices"></a></p>
|
||||
<p>The following is a list of AVR devices currently supported by the library. Note that actual support for some newer devices depends on the ability of the compiler/assembler to support these devices at library compile-time.</p>
|
||||
<dl class="section user"><dt>megaAVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>atmega103</li>
|
||||
<li>atmega128</li>
|
||||
<li>atmega128a</li>
|
||||
<li>atmega1280</li>
|
||||
<li>atmega1281</li>
|
||||
<li>atmega1284</li>
|
||||
<li>atmega1284p</li>
|
||||
<li>atmega16</li>
|
||||
<li>atmega161</li>
|
||||
<li>atmega162</li>
|
||||
<li>atmega163</li>
|
||||
<li>atmega164a</li>
|
||||
<li>atmega164p</li>
|
||||
<li>atmega164pa</li>
|
||||
<li>atmega165</li>
|
||||
<li>atmega165a</li>
|
||||
<li>atmega165p</li>
|
||||
<li>atmega165pa</li>
|
||||
<li>atmega168</li>
|
||||
<li>atmega168a</li>
|
||||
<li>atmega168p</li>
|
||||
<li>atmega168pa</li>
|
||||
<li>atmega16a</li>
|
||||
<li>atmega2560</li>
|
||||
<li>atmega2561</li>
|
||||
<li>atmega32</li>
|
||||
<li>atmega32a</li>
|
||||
<li>atmega323</li>
|
||||
<li>atmega324a</li>
|
||||
<li>atmega324p</li>
|
||||
<li>atmega324pa</li>
|
||||
<li>atmega325</li>
|
||||
<li>atmega325a</li>
|
||||
<li>atmega325p</li>
|
||||
<li>atmega325pa</li>
|
||||
<li>atmega3250</li>
|
||||
<li>atmega3250a</li>
|
||||
<li>atmega3250p</li>
|
||||
<li>atmega3250pa</li>
|
||||
<li>atmega328</li>
|
||||
<li>atmega328p</li>
|
||||
<li>atmega48</li>
|
||||
<li>atmega48a</li>
|
||||
<li>atmega48pa</li>
|
||||
<li>atmega48pb</li>
|
||||
<li>atmega48p</li>
|
||||
<li>atmega64</li>
|
||||
<li>atmega64a</li>
|
||||
<li>atmega640</li>
|
||||
<li>atmega644</li>
|
||||
<li>atmega644a</li>
|
||||
<li>atmega644p</li>
|
||||
<li>atmega644pa</li>
|
||||
<li>atmega645</li>
|
||||
<li>atmega645a</li>
|
||||
<li>atmega645p</li>
|
||||
<li>atmega6450</li>
|
||||
<li>atmega6450a</li>
|
||||
<li>atmega6450p</li>
|
||||
<li>atmega8</li>
|
||||
<li>atmega8a</li>
|
||||
<li>atmega88</li>
|
||||
<li>atmega88a</li>
|
||||
<li>atmega88p</li>
|
||||
<li>atmega88pa</li>
|
||||
<li>atmega88pb</li>
|
||||
<li>atmega8515</li>
|
||||
<li>atmega8535</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>tinyAVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>attiny4</li>
|
||||
<li>attiny5</li>
|
||||
<li>attiny10</li>
|
||||
<li>attiny11 <a class="el" href="index.html#supp_dev_footnote_one">[1]</a></li>
|
||||
<li>attiny12 <a class="el" href="index.html#supp_dev_footnote_one">[1]</a></li>
|
||||
<li>attiny13</li>
|
||||
<li>attiny13a</li>
|
||||
<li>attiny15 <a class="el" href="index.html#supp_dev_footnote_one">[1]</a></li>
|
||||
<li>attiny20</li>
|
||||
<li>attiny22</li>
|
||||
<li>attiny24</li>
|
||||
<li>attiny24a</li>
|
||||
<li>attiny25</li>
|
||||
<li>attiny26</li>
|
||||
<li>attiny261</li>
|
||||
<li>attiny261a</li>
|
||||
<li>attiny28 <a class="el" href="index.html#supp_dev_footnote_one">[1]</a></li>
|
||||
<li>attiny2313</li>
|
||||
<li>attiny2313a</li>
|
||||
<li>attiny40</li>
|
||||
<li>attiny4313</li>
|
||||
<li>attiny43u</li>
|
||||
<li>attiny44</li>
|
||||
<li>attiny44a</li>
|
||||
<li>attiny441</li>
|
||||
<li>attiny45</li>
|
||||
<li>attiny461</li>
|
||||
<li>attiny461a</li>
|
||||
<li>attiny48</li>
|
||||
<li>attiny828</li>
|
||||
<li>attiny84</li>
|
||||
<li>attiny84a</li>
|
||||
<li>attiny841</li>
|
||||
<li>attiny85</li>
|
||||
<li>attiny861</li>
|
||||
<li>attiny861a</li>
|
||||
<li>attiny87</li>
|
||||
<li>attiny88</li>
|
||||
<li>attiny1634</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>Automotive AVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>atmega16m1</li>
|
||||
<li>atmega32c1</li>
|
||||
<li>atmega32m1</li>
|
||||
<li>atmega64c1</li>
|
||||
<li>atmega64m1</li>
|
||||
<li>attiny167</li>
|
||||
<li>ata5505</li>
|
||||
<li>ata5272</li>
|
||||
<li>ata5702m322</li>
|
||||
<li>ata5782</li>
|
||||
<li>ata5790</li>
|
||||
<li>ata5790n</li>
|
||||
<li>ata5831</li>
|
||||
<li>ata5795</li>
|
||||
<li>ata6612c</li>
|
||||
<li>ata6613c</li>
|
||||
<li>ata6614q</li>
|
||||
<li>ata6616c</li>
|
||||
<li>ata6617c</li>
|
||||
<li>ata664251</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>CAN AVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>at90can32</li>
|
||||
<li>at90can64</li>
|
||||
<li>at90can128</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>LCD AVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>atmega169</li>
|
||||
<li>atmega169a</li>
|
||||
<li>atmega169p</li>
|
||||
<li>atmega169pa</li>
|
||||
<li>atmega329</li>
|
||||
<li>atmega329a</li>
|
||||
<li>atmega329p</li>
|
||||
<li>atmega329pa</li>
|
||||
<li>atmega3290</li>
|
||||
<li>atmega3290a</li>
|
||||
<li>atmega3290p</li>
|
||||
<li>atmega3290pa</li>
|
||||
<li>atmega649</li>
|
||||
<li>atmega649a</li>
|
||||
<li>atmega6490</li>
|
||||
<li>atmega6490a</li>
|
||||
<li>atmega6490p</li>
|
||||
<li>atmega649p</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>Lighting AVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>at90pwm1</li>
|
||||
<li>at90pwm2</li>
|
||||
<li>at90pwm2b</li>
|
||||
<li>at90pwm216</li>
|
||||
<li>at90pwm3</li>
|
||||
<li>at90pwm3b</li>
|
||||
<li>at90pwm316</li>
|
||||
<li>at90pwm161</li>
|
||||
<li>at90pwm81</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>Smart Battery AVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>atmega8hva</li>
|
||||
<li>atmega16hva</li>
|
||||
<li>atmega16hva2</li>
|
||||
<li>atmega16hvb</li>
|
||||
<li>atmega16hvbrevb</li>
|
||||
<li>atmega32hvb</li>
|
||||
<li>atmega32hvbrevb</li>
|
||||
<li>atmega64hve</li>
|
||||
<li>atmega64hve2</li>
|
||||
<li>atmega406</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>USB AVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>at90usb82</li>
|
||||
<li>at90usb162</li>
|
||||
<li>at90usb646</li>
|
||||
<li>at90usb647</li>
|
||||
<li>at90usb1286</li>
|
||||
<li>at90usb1287</li>
|
||||
<li>atmega8u2</li>
|
||||
<li>atmega16u2</li>
|
||||
<li>atmega16u4</li>
|
||||
<li>atmega32u2</li>
|
||||
<li>atmega32u4</li>
|
||||
<li>atmega32u6</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>XMEGA Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>atxmega8e5</li>
|
||||
<li>atxmega16a4</li>
|
||||
<li>atxmega16a4u</li>
|
||||
<li>atxmega16c4</li>
|
||||
<li>atxmega16d4</li>
|
||||
<li>atxmega32a4</li>
|
||||
<li>atxmega32a4u</li>
|
||||
<li>atxmega32c3</li>
|
||||
<li>atxmega32c4</li>
|
||||
<li>atxmega32d3</li>
|
||||
<li>atxmega32d4</li>
|
||||
<li>atxmega32e5</li>
|
||||
<li>atxmega64a1</li>
|
||||
<li>atxmega64a1u</li>
|
||||
<li>atxmega64a3</li>
|
||||
<li>atxmega64a3u</li>
|
||||
<li>atxmega64a4u</li>
|
||||
<li>atxmega64b1</li>
|
||||
<li>atxmega64b3</li>
|
||||
<li>atxmega64c3</li>
|
||||
<li>atxmega64d3</li>
|
||||
<li>atxmega64d4</li>
|
||||
<li>atxmega128a1</li>
|
||||
<li>atxmega128a1u</li>
|
||||
<li>atxmega128a3</li>
|
||||
<li>atxmega128a3u</li>
|
||||
<li>atxmega128a4u</li>
|
||||
<li>atxmega128b1</li>
|
||||
<li>atxmega128b3</li>
|
||||
<li>atxmega128c3</li>
|
||||
<li>atxmega128d3</li>
|
||||
<li>atxmega128d4</li>
|
||||
<li>atxmega192a3</li>
|
||||
<li>atxmega192a3u</li>
|
||||
<li>atxmega192c3</li>
|
||||
<li>atxmega192d3</li>
|
||||
<li>atxmega256a3</li>
|
||||
<li>atxmega256a3u</li>
|
||||
<li>atxmega256a3b</li>
|
||||
<li>atxmega256a3bu</li>
|
||||
<li>atxmega256c3</li>
|
||||
<li>atxmega256d3</li>
|
||||
<li>atxmega384c3</li>
|
||||
<li>atxmega384d3</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>Wireless AVR devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>atmega644rfr2</li>
|
||||
<li>atmega64rfr2</li>
|
||||
<li>atmega128rfa1</li>
|
||||
<li>atmega1284rfr2</li>
|
||||
<li>atmega128rfr2</li>
|
||||
<li>atmega2564rfr2</li>
|
||||
<li>atmega256rfr2</li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>Miscellaneous Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>at94K <a class="el" href="index.html#supp_dev_footnote_two">[2]</a></li>
|
||||
<li>at76c711 <a class="el" href="index.html#supp_dev_footnote_three">[3]</a></li>
|
||||
<li>at43usb320</li>
|
||||
<li>at43usb355</li>
|
||||
<li>at86rf401</li>
|
||||
<li>at90scr100</li>
|
||||
<li>ata6285</li>
|
||||
<li>ata6286</li>
|
||||
<li>ata6289</li>
|
||||
<li>m3000 <a class="el" href="index.html#supp_dev_footnote_four">[4]</a></li>
|
||||
</ul>
|
||||
<dl class="section user"><dt>Classic AVR Devices:</dt><dd></dd></dl>
|
||||
<ul>
|
||||
<li>at90s1200 <a class="el" href="index.html#supp_dev_footnote_one">[1]</a></li>
|
||||
<li>at90s2313</li>
|
||||
<li>at90s2323</li>
|
||||
<li>at90s2333</li>
|
||||
<li>at90s2343</li>
|
||||
<li>at90s4414</li>
|
||||
<li>at90s4433</li>
|
||||
<li>at90s4434</li>
|
||||
<li>at90s8515</li>
|
||||
<li>at90c8534</li>
|
||||
<li>at90s8535</li>
|
||||
</ul>
|
||||
<p><a class="anchor" id="supp_dev_footnote_one"></a> </p><dl class="section note"><dt>Note</dt><dd><b>[1]</b> Assembly only. There is no direct support for these devices to be programmed in C since they do not have a RAM based stack. Still, it could be possible to program them in C, see the <a class="el" href="FAQ.html#faq_tinyavr_c">FAQ</a> for an option.</dd></dl>
|
||||
<p><a class="anchor" id="supp_dev_footnote_two"></a> </p><dl class="section note"><dt>Note</dt><dd><b>[2]</b> The at94K devices are a combination of FPGA and AVR microcontroller. [TRoth-2002/11/12: Not sure of the level of support for these. More information would be welcomed.]</dd></dl>
|
||||
<p><a class="anchor" id="supp_dev_footnote_three"></a> </p><dl class="section note"><dt>Note</dt><dd><b>[3]</b> The at76c711 is a USB to fast serial interface bridge chip using an AVR core.</dd></dl>
|
||||
<p><a class="anchor" id="supp_dev_footnote_four"></a> </p><dl class="section note"><dt>Note</dt><dd><b>[4]</b> The m3000 is a motor controller AVR ASIC from Intelligent Motion Systems (IMS) / Schneider Electric.</dd></dl>
|
||||
<h1><a class="anchor" id="license"></a>
|
||||
avr-libc License</h1>
|
||||
<p>avr-libc can be freely used and redistributed, provided the following license conditions are met.</p>
|
||||
<pre class="fragment">Portions of avr-libc are Copyright (c) 1999-2016
|
||||
Werner Boellmann,
|
||||
Dean Camera,
|
||||
Pieter Conradie,
|
||||
Brian Dean,
|
||||
Keith Gudger,
|
||||
Wouter van Gulik,
|
||||
Bjoern Haase,
|
||||
Steinar Haugen,
|
||||
Peter Jansen,
|
||||
Reinhard Jessich,
|
||||
Magnus Johansson,
|
||||
Harald Kipp,
|
||||
Carlos Lamas,
|
||||
Cliff Lawson,
|
||||
Artur Lipowski,
|
||||
Marek Michalkiewicz,
|
||||
Todd C. Miller,
|
||||
Rich Neswold,
|
||||
Colin O'Flynn,
|
||||
Bob Paddock,
|
||||
Andrey Pashchenko,
|
||||
Reiner Patommel,
|
||||
Florin-Viorel Petrov,
|
||||
Alexander Popov,
|
||||
Michael Rickman,
|
||||
Theodore A. Roth,
|
||||
Juergen Schilling,
|
||||
Philip Soeberg,
|
||||
Anatoly Sokolov,
|
||||
Nils Kristian Strom,
|
||||
Michael Stumpf,
|
||||
Stefan Swanepoel,
|
||||
Helmut Wallner,
|
||||
Eric B. Weddington,
|
||||
Joerg Wunsch,
|
||||
Dmitry Xmelkov,
|
||||
Atmel Corporation,
|
||||
egnite Software GmbH,
|
||||
The Regents of the University of California.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
* Neither the name of the copyright holders nor the names of
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
</pre> </div></div><!-- contents -->
|
||||
<!-- HTML footer for doxygen 1.8.7-->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Mon Feb 8 2016 23:59:10 for avr-libc by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
51
test/html/manual/floats-and-absolute.html
Normal file
51
test/html/manual/floats-and-absolute.html
Normal file
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Floats And Absolute Positions</title>
|
||||
<style type="text/css">
|
||||
div.main {
|
||||
margin: 0 0 0 100px;
|
||||
top: 3cm;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
div.margin {
|
||||
position: absolute;
|
||||
top: 3cm;
|
||||
width: 120px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Floats And Absolute Positions</h1>
|
||||
<div class="main">
|
||||
<img style="float: left" src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Library_of_Ashurbanipal_The_Flood_Tablet.jpg/218px-Library_of_Ashurbanipal_The_Flood_Tablet.jpg" />
|
||||
<p>Sed ut perspiciatis, unde omnis iste natus error sit
|
||||
voluptatem accusantium doloremque laudantium, totam rem
|
||||
aperiam eaque ipsa, quae ab illo inventore veritatis et quasi
|
||||
architecto beatae vitae dicta sunt, explicabo. nemo enim ipsam
|
||||
voluptatem, quia voluptas sit, aspernatur aut odit aut fugit,
|
||||
sed quia consequuntur magni dolores eos, qui ratione
|
||||
voluptatem sequi nesciunt, neque porro quisquam est, qui
|
||||
dolorem ipsum, quia dolor sit, amet, consectetur, adipisci
|
||||
velit, sed quia non numquam eius modi tempora incidunt, ut
|
||||
labore et dolore magnam aliquam quaerat voluptatem. ut enim ad
|
||||
minima veniam, quis nostrum exercitationem ullam corporis
|
||||
suscipit laboriosam, nisi ut aliquid ex ea commodi
|
||||
consequatur? quis autem vel eum iure reprehenderit, qui in ea
|
||||
voluptate velit esse, quam nihil molestiae consequatur, vel
|
||||
illum, qui dolorem eum fugiat, quo voluptas nulla
|
||||
pariatur?</p>
|
||||
<p>Ἐν ἀρχῇ ἦν ὁ Λόγος, καὶ ὁ Λόγος ἦν πρὸς τὸν Θεόν, καὶ Θεὸς ἦν
|
||||
ὁ Λόγος. Οὗτος ἦν ἐν ἀρχῇ πρὸς τὸν Θεόν. πάντα δι' αὐτοῦ
|
||||
ἐγένετο, καὶ χωρὶς αὐτοῦ ἐγένετο οὐδὲ ἕν ὃ γέγονεν. ἐν αὐτῷ
|
||||
ζωὴ ἦν, καὶ ἡ ζωὴ ἦν τὸ φῶς τῶν ἀνθρώπων. καὶ τὸ φῶς ἐν τῇ
|
||||
σκοτίᾳ φαίνει, καὶ ἡ σκοτία αὐτὸ οὐ κατέλαβεν.</p>
|
||||
</div>
|
||||
<div class="margin">Margin, actually on the left side.</div>
|
||||
<body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
40
test/html/manual/floats-and-margins.html
Normal file
40
test/html/manual/floats-and-margins.html
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Floats And Margins</title>
|
||||
<style type="text/css">
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Library_of_Ashurbanipal_The_Flood_Tablet.jpg/200px-Library_of_Ashurbanipal_The_Flood_Tablet.jpg" style="float: left; margin: 1cm 1cm 1cm 0" />
|
||||
Ἐν ἀρχῇ ἦν ὁ Λόγος, καὶ ὁ Λόγος ἦν πρὸς τὸν Θεόν, καὶ Θεὸς ἦν ὁ
|
||||
Λόγος. Οὗτος ἦν ἐν ἀρχῇ πρὸς τὸν Θεόν. πάντα δι' αὐτοῦ ἐγένετο,
|
||||
καὶ χωρὶς αὐτοῦ ἐγένετο οὐδὲ ἕν ὃ γέγονεν. ἐν αὐτῷ ζωὴ ἦν, καὶ ἡ
|
||||
ζωὴ ἦν τὸ φῶς τῶν ἀνθρώπων. καὶ τὸ φῶς ἐν τῇ σκοτίᾳ φαίνει, καὶ
|
||||
ἡ σκοτία αὐτὸ οὐ κατέλαβεν.
|
||||
</p>
|
||||
<p style="margin: 0 3cm">
|
||||
<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/GilgameshTablet.jpg/200px-GilgameshTablet.jpg" style="float: right; margin: 1cm 0 1cm 1cm"/>
|
||||
Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa,
|
||||
quae ab illo inventore veritatis et quasi architecto beatae
|
||||
vitae dicta sunt, explicabo. nemo enim ipsam voluptatem, quia
|
||||
voluptas sit, aspernatur aut odit aut fugit, sed quia
|
||||
consequuntur magni dolores eos, qui ratione voluptatem sequi
|
||||
nesciunt, neque porro quisquam est, qui dolorem ipsum, quia
|
||||
dolor sit, amet, consectetur, adipisci velit, sed quia non
|
||||
numquam eius modi tempora incidunt, ut labore et dolore magnam
|
||||
aliquam quaerat voluptatem. ut enim ad minima veniam, quis
|
||||
nostrum exercitationem ullam corporis suscipit laboriosam, nisi
|
||||
ut aliquid ex ea commodi consequatur? quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil
|
||||
molestiae consequatur, vel illum, qui dolorem eum fugiat, quo
|
||||
voluptas nulla pariatur?
|
||||
</p>
|
||||
<body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
24
test/html/manual/floats-table.html
Normal file
24
test/html/manual/floats-table.html
Normal file
@ -0,0 +1,24 @@
|
||||
<p>Demonstrating how to include floats into width extremes.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td style="border: 1px dashed black">
|
||||
<div style="float:left; border: 1px dashed black">Somelongwordwhichmustnotbebrokensotakingmuchspaceinatablecolumn</div>
|
||||
Some short text.
|
||||
<td style="border: 1px dashed black">
|
||||
Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa,
|
||||
quae ab illo inventore veritatis et quasi architecto beatae
|
||||
vitae dicta sunt, explicabo. nemo enim ipsam voluptatem, quia
|
||||
voluptas sit, aspernatur aut odit aut fugit, sed quia
|
||||
consequuntur magni dolores eos, qui ratione voluptatem sequi
|
||||
nesciunt, neque porro quisquam est, qui dolorem ipsum, quia
|
||||
dolor sit, amet, consectetur, adipisci velit, sed quia non
|
||||
numquam eius modi tempora incidunt, ut labore et dolore magnam
|
||||
aliquam quaerat voluptatem. ut enim ad minima veniam, quis
|
||||
nostrum exercitationem ullam corporis suscipit laboriosam, nisi
|
||||
ut aliquid ex ea commodi consequatur? quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil
|
||||
molestiae consequatur, vel illum, qui dolorem eum fugiat, quo
|
||||
voluptas nulla pariatur?
|
||||
</table>
|
||||
42
test/html/manual/floats-worm.html
Normal file
42
test/html/manual/floats-worm.html
Normal file
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Floats and iterators: search for "worm" and pay attention
|
||||
to the order.</title>
|
||||
<style type="text/css">
|
||||
.float1, .float2 {
|
||||
padding: 0.5em;
|
||||
border: 1px dashed #404040;
|
||||
width: 30%;
|
||||
}
|
||||
.float1 {
|
||||
float: left;
|
||||
margin: 0.5em 0.5em 0.5em 0;
|
||||
}
|
||||
.float2 {
|
||||
float: right;
|
||||
margin: 0.5em 0 0.5em 0.5em;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="float1">1: apple apple worm apple apple</div>
|
||||
<p>2: apple apple apple apple apple apple apple apple apple apple
|
||||
apple apple apple apple apple apple apple apple apple apple
|
||||
apple apple apple apple worm apple apple apple apple apple apple
|
||||
apple apple apple apple apple apple apple apple apple apple
|
||||
apple apple apple apple apple apple apple apple</p>
|
||||
<div class="float2">3: apple apple worm apple apple</div>
|
||||
<p>4: apple apple apple apple apple apple apple apple apple apple
|
||||
apple apple apple apple apple apple apple apple apple apple
|
||||
apple apple apple apple worm apple apple apple apple apple apple
|
||||
apple apple apple apple apple apple apple apple apple apple
|
||||
apple apple apple apple apple apple apple apple</p>
|
||||
<div class="float1">5: apple apple worm apple apple</div>
|
||||
<body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
46
test/html/manual/floats1.html
Normal file
46
test/html/manual/floats1.html
Normal file
@ -0,0 +1,46 @@
|
||||
<div>First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First
|
||||
paragraph. <div style="float: left; border: 1px dashed black">Left
|
||||
float. Left float. Left float. Left float. Left float. Left
|
||||
float. Left float. Left float. Left float. Left float. Left
|
||||
float. Left float. Left float. Left float. Left float. Left
|
||||
float. Left float. Left float. Left float. Left float.</div> First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph. First paragraph. First
|
||||
paragraph. First paragraph. First paragraph.</div>
|
||||
<div><div>Second paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph.<div style="float:
|
||||
right; border: 1px dashed black">Right float. Right float. Right
|
||||
float. Right float. Right float. Right float.</div> Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph. Second
|
||||
paragraph. Second paragraph. Second paragraph.</div></div>
|
||||
17
test/html/manual/floats2.html
Normal file
17
test/html/manual/floats2.html
Normal file
@ -0,0 +1,17 @@
|
||||
Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae
|
||||
ab illo inventore veritatis et quasi architecto beatae vitae dicta
|
||||
sunt, explicabo.
|
||||
<div style="float:left; border: 1px dashed black">Some text in a
|
||||
float.<br /><img src="https://dillo-browser.github.io/old/dw/html/not-so-simple-container.png" /></div>
|
||||
nemo enim ipsam voluptatem, quia voluptas sit,
|
||||
aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
|
||||
eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est,
|
||||
qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit,
|
||||
sed quia non numquam eius modi tempora incidunt, ut labore et dolore
|
||||
magnam aliquam quaerat voluptatem. ut enim ad minima veniam, quis
|
||||
nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut
|
||||
aliquid ex ea commodi consequatur? quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae
|
||||
consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla
|
||||
pariatur?
|
||||
16
test/html/manual/floats3.html
Normal file
16
test/html/manual/floats3.html
Normal file
@ -0,0 +1,16 @@
|
||||
<p>Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae
|
||||
ab illo inventore veritatis et quasi architecto beatae vitae dicta
|
||||
sunt, explicabo.</p>
|
||||
<div style="float:left; border: 1px dashed black">Some text in a
|
||||
float.<br /><img src="https://dillo-browser.github.io/old/dw/html/not-so-simple-container.png" /></div>
|
||||
<p>nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit
|
||||
aut fugit, sed quia consequuntur magni dolores eos, qui ratione
|
||||
voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem
|
||||
ipsum, quia dolor sit, amet, consectetur, adipisci velit, sed quia non
|
||||
numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam
|
||||
quaerat voluptatem. ut enim ad minima veniam, quis nostrum
|
||||
exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex
|
||||
ea commodi consequatur? quis autem vel eum iure reprehenderit, qui in
|
||||
ea voluptate velit esse, quam nihil molestiae consequatur, vel illum,
|
||||
qui dolorem eum fugiat, quo voluptas nulla pariatur?</p>
|
||||
63
test/html/manual/floats4.html
Normal file
63
test/html/manual/floats4.html
Normal file
@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Floats 4</title>
|
||||
<style type="text/css">
|
||||
.border {
|
||||
background-color: #e0e0ff;
|
||||
padding: 1cm;
|
||||
}
|
||||
.float1, .float2 {
|
||||
margin: 1cm;
|
||||
padding: 1cm;
|
||||
border: 1px dashed red;
|
||||
background-color: #f0fff0;
|
||||
float: right;
|
||||
}
|
||||
.float1 {
|
||||
float: left;
|
||||
}
|
||||
.float2 {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.wide {
|
||||
margin: 1cm 0;
|
||||
padding: 1cm;
|
||||
border: 1px dashed red;
|
||||
background-color: #ffffd0;
|
||||
width: 40cm;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="border">
|
||||
<div class="float2">Some text in a float.</div>
|
||||
|
||||
<p>Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa,
|
||||
quae ab illo inventore veritatis et quasi architecto beatae
|
||||
vitae dicta sunt, explicabo. nemo enim ipsam voluptatem, quia
|
||||
voluptas sit, aspernatur aut odit aut fugit, sed quia
|
||||
consequuntur magni dolores eos, qui ratione voluptatem sequi
|
||||
nesciunt, neque porro quisquam est, qui dolorem ipsum, quia
|
||||
dolor sit, amet, consectetur, adipisci velit, sed quia non
|
||||
numquam eius modi tempora incidunt, ut labore et dolore magnam
|
||||
aliquam quaerat voluptatem. ut enim ad minima veniam, quis
|
||||
nostrum exercitationem ullam corporis suscipit laboriosam, nisi
|
||||
ut aliquid ex ea commodi consequatur? quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil
|
||||
molestiae consequatur, vel illum, qui dolorem eum fugiat, quo
|
||||
voluptas nulla pariatur?</p>
|
||||
|
||||
<table class="wide"><tbody><tr><td>Ἐν ἀρχῇ ἦν ὁ Λόγος, καὶ ὁ Λόγος
|
||||
ἦν πρὸς τὸν Θεόν, καὶ Θεὸς ἦν ὁ Λόγος. Οὗτος ἦν ἐν ἀρχῇ πρὸς τὸν
|
||||
Θεόν. πάντα δι' αὐτοῦ ἐγένετο, καὶ χωρὶς αὐτοῦ ἐγένετο οὐδὲ ἕν ὃ
|
||||
γέγονεν. ἐν αὐτῷ ζωὴ ἦν, καὶ ἡ ζωὴ ἦν τὸ φῶς τῶν ἀνθρώπων. καὶ
|
||||
τὸ φῶς ἐν τῇ σκοτίᾳ φαίνει, καὶ ἡ σκοτία αὐτὸ οὐ
|
||||
κατέλαβεν.</tbody></tr></td></table>
|
||||
<body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
16
test/html/manual/floats5.html
Normal file
16
test/html/manual/floats5.html
Normal file
@ -0,0 +1,16 @@
|
||||
Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae
|
||||
ab illo inventore veritatis et quasi architecto beatae vitae dicta
|
||||
sunt, explicabo.
|
||||
<div style="float:left; border: 1px dashed black"><img src="https://dillo-browser.github.io/old/Icons/ProgramIcon16.png" /></div>
|
||||
nemo enim ipsam voluptatem, quia voluptas sit,
|
||||
aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
|
||||
eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est,
|
||||
qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit,
|
||||
sed quia non numquam eius modi tempora incidunt, ut labore et dolore
|
||||
magnam aliquam quaerat voluptatem. ut enim ad minima veniam, quis
|
||||
nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut
|
||||
aliquid ex ea commodi consequatur? quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae
|
||||
consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla
|
||||
pariatur?
|
||||
3
test/html/manual/hyphenate-nbsp.html
Normal file
3
test/html/manual/hyphenate-nbsp.html
Normal file
@ -0,0 +1,3 @@
|
||||
<div style="font-size:10em" lang=de>
|
||||
Wei<EFBFBD> kurz und knapp www.dillo.org
|
||||
</div>
|
||||
6
test/html/manual/hyphens-etc.html
Normal file
6
test/html/manual/hyphens-etc.html
Normal file
@ -0,0 +1,6 @@
|
||||
<p>Abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde­abcde</p>
|
||||
<p>Abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde</p>
|
||||
<p>Abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde‐abcde</p>
|
||||
<p>Abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde—abcde</p>
|
||||
<p lang="de">Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen—Nordrhein-Westfalen</p>
|
||||
<p lang="de">Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen—Nord­rheinwestfalen</p>
|
||||
27
test/html/manual/lang.html
Normal file
27
test/html/manual/lang.html
Normal file
@ -0,0 +1,27 @@
|
||||
<p>Bla bla bla bla bla bla bla bla bla Bla bla bla bla bla
|
||||
bla bla bla bla bla:
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung</p>
|
||||
<p lang="de">Bla bla bla bla bla bla bla bla bla Bla bla bla bla bla
|
||||
bla bla bla bla bla:
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung</p>
|
||||
<p lang="en">Bla bla bla bla bla bla bla bla bla Bla bla bla bla bla
|
||||
bla bla bla bla bla:
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung</p>
|
||||
<p lang="es">Bla bla bla bla bla bla bla bla bla Bla bla bla bla bla
|
||||
bla bla bla bla bla:
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<p>Bla bla bla bla bla bla bla bla bla Bla bla bla bla bla
|
||||
bla bla bla bla bla:
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung</p>
|
||||
<p xml:lang="de">Bla bla bla bla bla bla bla bla bla Bla bla bla bla bla
|
||||
bla bla bla bla bla:
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung</p>
|
||||
<p xml:lang="en">Bla bla bla bla bla bla bla bla bla Bla bla bla bla bla
|
||||
bla bla bla bla bla:
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung</p>
|
||||
<p xml:lang="es">Bla bla bla bla bla bla bla bla bla Bla bla bla bla bla
|
||||
bla bla bla bla bla:
|
||||
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung</p>
|
||||
34
test/html/manual/max-width-body.html
Normal file
34
test/html/manual/max-width-body.html
Normal file
@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test min-width and max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px; min-width: 400px; max-width: 600px; background: lightgrey}
|
||||
.min {width: 400px; background: lightgreen}
|
||||
.max {width: 600px; background: lightgreen}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="min">
|
||||
<p>By resizing the window, the content below in gray should stay
|
||||
within the limits of minimum and maximum width.</p>
|
||||
<p>Minimum width 400 px</p>
|
||||
</div>
|
||||
<div>
|
||||
<p>This is a rather long text to increase the maximal paragraph
|
||||
width. Sed ut perspiciatis, unde omnis iste natus error sit
|
||||
voluptatem accusantium doloremque laudantium, totam rem aperiam
|
||||
eaque ipsa, quae ab illo inventore veritatis et quasi architecto
|
||||
beatae vitae dicta sunt, explicabo. nemo enim ipsam voluptatem,
|
||||
quia voluptas sit, aspernatur aut odit aut fugit, sed quia
|
||||
consequuntur magni dolores eos, qui ratione voluptatem sequi
|
||||
nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor
|
||||
sit, amet, consectetur, adipisci velit, sed quia non numquam eius
|
||||
modi tempora incidunt, ut labore et dolore magnam aliquam quaerat
|
||||
voluptatem. ut enim ad minima veniam, quis nostrum exercitationem
|
||||
ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi
|
||||
consequatur?</p>
|
||||
</div>
|
||||
<div class="max"><p>Maximum width 600 px</p></div>
|
||||
</body>
|
||||
</html>
|
||||
35
test/html/manual/max-width-div.html
Normal file
35
test/html/manual/max-width-div.html
Normal file
@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test min-width and max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.min {width: 400px; background: lightgreen}
|
||||
.max {width: 600px; background: lightgreen}
|
||||
.test {min-width: 400px; max-width: 600px; background: lightgrey}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="min">
|
||||
<p>By resizing the window, the content below in gray should stay
|
||||
within the limits of minimum and maximum width.</p>
|
||||
<p>Minimum width 400 px</p>
|
||||
</div>
|
||||
<div class="test">
|
||||
<p>This is a rather long text to increase the maximal paragraph
|
||||
width. Sed ut perspiciatis, unde omnis iste natus error sit
|
||||
voluptatem accusantium doloremque laudantium, totam rem aperiam
|
||||
eaque ipsa, quae ab illo inventore veritatis et quasi architecto
|
||||
beatae vitae dicta sunt, explicabo. nemo enim ipsam voluptatem,
|
||||
quia voluptas sit, aspernatur aut odit aut fugit, sed quia
|
||||
consequuntur magni dolores eos, qui ratione voluptatem sequi
|
||||
nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor
|
||||
sit, amet, consectetur, adipisci velit, sed quia non numquam eius
|
||||
modi tempora incidunt, ut labore et dolore magnam aliquam quaerat
|
||||
voluptatem. ut enim ad minima veniam, quis nostrum exercitationem
|
||||
ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi
|
||||
consequatur?</p>
|
||||
</div>
|
||||
<div class="max"><p>Maximum width 600 px</p></div>
|
||||
</body>
|
||||
</html>
|
||||
35
test/html/manual/max-width-html.html
Normal file
35
test/html/manual/max-width-html.html
Normal file
@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test min-width and max-width CSS properties</title>
|
||||
<style>
|
||||
html {max-width: 600px; background: lightgray}
|
||||
body {margin: 7px}
|
||||
.min {width: 400px; background: lightgreen}
|
||||
.max {width: 600px; background: lightgreen}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="min">
|
||||
<p>By resizing the window, the content below in gray should stay
|
||||
within the limits of minimum and maximum width.</p>
|
||||
<p>Minimum width 400 px</p>
|
||||
</div>
|
||||
<div>
|
||||
<p>This is a rather long text to increase the maximal paragraph
|
||||
width. Sed ut perspiciatis, unde omnis iste natus error sit
|
||||
voluptatem accusantium doloremque laudantium, totam rem aperiam
|
||||
eaque ipsa, quae ab illo inventore veritatis et quasi architecto
|
||||
beatae vitae dicta sunt, explicabo. nemo enim ipsam voluptatem,
|
||||
quia voluptas sit, aspernatur aut odit aut fugit, sed quia
|
||||
consequuntur magni dolores eos, qui ratione voluptatem sequi
|
||||
nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor
|
||||
sit, amet, consectetur, adipisci velit, sed quia non numquam eius
|
||||
modi tempora incidunt, ut labore et dolore magnam aliquam quaerat
|
||||
voluptatem. ut enim ad minima veniam, quis nostrum exercitationem
|
||||
ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi
|
||||
consequatur?</p>
|
||||
</div>
|
||||
<div class="max"><p>Maximum width 600 px</p></div>
|
||||
</body>
|
||||
</html>
|
||||
37
test/html/manual/max-width-nested-div.html
Normal file
37
test/html/manual/max-width-nested-div.html
Normal file
@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test min-width and max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {min-width: 400px; max-width: 600px; background: lightgray}
|
||||
.min {width: 400px; background: lightgreen}
|
||||
.max {width: 600px; background: lightgreen}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="background:lightblue">
|
||||
<div class="min">
|
||||
<p>By resizing the window, the content below in gray should stay
|
||||
within the limits of minimum and maximum width.</p>
|
||||
<p>Minimum width 400 px</p>
|
||||
</div>
|
||||
<div class="test">
|
||||
<p>This is a rather long text to increase the maximal paragraph
|
||||
width. Sed ut perspiciatis, unde omnis iste natus error sit
|
||||
voluptatem accusantium doloremque laudantium, totam rem aperiam
|
||||
eaque ipsa, quae ab illo inventore veritatis et quasi architecto
|
||||
beatae vitae dicta sunt, explicabo. nemo enim ipsam voluptatem,
|
||||
quia voluptas sit, aspernatur aut odit aut fugit, sed quia
|
||||
consequuntur magni dolores eos, qui ratione voluptatem sequi
|
||||
nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor
|
||||
sit, amet, consectetur, adipisci velit, sed quia non numquam eius
|
||||
modi tempora incidunt, ut labore et dolore magnam aliquam quaerat
|
||||
voluptatem. ut enim ad minima veniam, quis nostrum exercitationem
|
||||
ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi
|
||||
consequatur?</p>
|
||||
</div>
|
||||
<div class="max"><p>Maximum width 600 px</p></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
21
test/html/manual/table-1.html
Normal file
21
test/html/manual/table-1.html
Normal file
@ -0,0 +1,21 @@
|
||||
<table>
|
||||
<tr>
|
||||
<td>Short, <span style="white-space: nowrap">then some more text,
|
||||
which must not be broken.</span>
|
||||
<td>This is a rather long text to increase the maximal paragraph
|
||||
width. Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae
|
||||
ab illo inventore veritatis et quasi architecto beatae vitae dicta
|
||||
sunt, explicabo. nemo enim ipsam voluptatem, quia voluptas sit,
|
||||
aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
|
||||
eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est,
|
||||
qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit,
|
||||
sed quia non numquam eius modi tempora incidunt, ut labore et dolore
|
||||
magnam aliquam quaerat voluptatem. ut enim ad minima veniam, quis
|
||||
nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut
|
||||
aliquid ex ea commodi consequatur? quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae
|
||||
consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla
|
||||
pariatur?
|
||||
</tr>
|
||||
</table>
|
||||
37
test/html/manual/table-h1.html
Normal file
37
test/html/manual/table-h1.html
Normal file
@ -0,0 +1,37 @@
|
||||
<table>
|
||||
<tr>
|
||||
<td lang="de">Grundstücksverkehrsgenehmigungszuständigkeit ABC
|
||||
<td>Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae
|
||||
ab illo inventore veritatis et quasi architecto beatae vitae dicta
|
||||
sunt, explicabo. nemo enim ipsam voluptatem, quia voluptas sit,
|
||||
aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
|
||||
eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est,
|
||||
qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit,
|
||||
sed quia non numquam eius modi tempora incidunt, ut labore et dolore
|
||||
magnam aliquam quaerat voluptatem. ut enim ad minima veniam, quis
|
||||
nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut
|
||||
aliquid ex ea commodi consequatur? quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae
|
||||
consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla
|
||||
pariatur?
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Grund­stücks­ver­kehrs­ge­neh­mi­gungs­zu­stän­dig­keit ABC
|
||||
<td>Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae
|
||||
ab illo inventore veritatis et quasi architecto beatae vitae dicta
|
||||
sunt, explicabo. nemo enim ipsam voluptatem, quia voluptas sit,
|
||||
aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
|
||||
eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est,
|
||||
qui dolorem ipsum, quia dolor sit, amet, consectetur, adipisci velit,
|
||||
sed quia non numquam eius modi tempora incidunt, ut labore et dolore
|
||||
magnam aliquam quaerat voluptatem. ut enim ad minima veniam, quis
|
||||
nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut
|
||||
aliquid ex ea commodi consequatur? quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae
|
||||
consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla
|
||||
pariatur?
|
||||
</table>
|
||||
9
test/html/manual/table-narrow.html
Normal file
9
test/html/manual/table-narrow.html
Normal file
@ -0,0 +1,9 @@
|
||||
<table border=1>
|
||||
<tr>
|
||||
<td>W d<whatever>aaaaaaaaaaaa*<br>
|
||||
<td>WW d<whatever>aaaaaaaaaaaa*<br>
|
||||
<td>WWW d<whatever>aaaaaaaaaaaa*<br>
|
||||
<td>WWWW d<whatever>aaaaaaaaaaaa*<br>
|
||||
<td>WWWWW d<whatever>aaaaaaaaaaaa*<br>
|
||||
<td>WWWWWW d<whatever>aaaaaaaaaaaa*<br>
|
||||
</table>
|
||||
10
test/html/manual/title-dup.html
Normal file
10
test/html/manual/title-dup.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>one</title>
|
||||
<title>two</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Duplicated title</p>
|
||||
</body>
|
||||
</html>
|
||||
9
test/html/manual/title-empty.html
Normal file
9
test/html/manual/title-empty.html
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Empty title</p>
|
||||
</body>
|
||||
</html>
|
||||
8
test/html/manual/title-missing.html
Normal file
8
test/html/manual/title-missing.html
Normal file
@ -0,0 +1,8 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<p>Missing title</p>
|
||||
</body>
|
||||
</html>
|
||||
1
test/html/render/b-div.html
Normal file
1
test/html/render/b-div.html
Normal file
@ -0,0 +1 @@
|
||||
<b>Hello World</b><div>Hello world</div>
|
||||
1
test/html/render/b-div.ref.html
Normal file
1
test/html/render/b-div.ref.html
Normal file
@ -0,0 +1 @@
|
||||
<b>Hello World</b><br/>Hello world
|
||||
29
test/html/render/div-100-percent-with-padding.html
Normal file
29
test/html/render/div-100-percent-with-padding.html
Normal file
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test padding in 100% width div</title>
|
||||
<style>
|
||||
body {margin: 0px}
|
||||
.test {
|
||||
width: 100%;
|
||||
margin: 50px;
|
||||
padding: 50px;
|
||||
background: lightgreen;
|
||||
border: solid 1px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the works.
|
||||
By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public
|
||||
License for most of our software; it applies also to any other
|
||||
work released this way by its authors. You can apply it to your
|
||||
programs, too.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
29
test/html/render/div-100-percent-with-padding.ref.html
Normal file
29
test/html/render/div-100-percent-with-padding.ref.html
Normal file
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test padding in 100% width div</title>
|
||||
<style>
|
||||
body {margin: 0px}
|
||||
.test {
|
||||
width: 800px;
|
||||
margin: 50px;
|
||||
padding: 50px;
|
||||
background: lightgreen;
|
||||
border: solid 1px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the works.
|
||||
By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public
|
||||
License for most of our software; it applies also to any other
|
||||
work released this way by its authors. You can apply it to your
|
||||
programs, too.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
19
test/html/render/float-img-justify.html
Normal file
19
test/html/render/float-img-justify.html
Normal file
@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test floating image in paragraph with br</title>
|
||||
<style>
|
||||
body {width: 400px}
|
||||
img {width: 40%; float:right}
|
||||
p {text-align: justify;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<i>The text below should be readable:</i>
|
||||
<p>
|
||||
<img src="pic.png" />
|
||||
This is a rather long text to increase the width.
|
||||
<br>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
18
test/html/render/float-img-justify.ref.html
Normal file
18
test/html/render/float-img-justify.ref.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test floating image in paragraph with br</title>
|
||||
<style>
|
||||
body {width: 400px}
|
||||
img {width: 40%; float:right}
|
||||
p {text-align: justify;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<i>The text below should be readable:</i>
|
||||
<p>
|
||||
<img src="pic.png" />
|
||||
This is a rather long text to increase the width.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
14
test/html/render/github-infinite-loop.html
Normal file
14
test/html/render/github-infinite-loop.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>GitHub infinite layout loop</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="display:inline-block">
|
||||
<form style="float:left">
|
||||
<input type="hidden"/>
|
||||
<button type="submit" style="white-space:nowrap; float:left">Hello</button>
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
14
test/html/render/github-infinite-loop.ref.html
Normal file
14
test/html/render/github-infinite-loop.ref.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>GitHub infinite layout loop</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="display:inline-block">
|
||||
<form style="float:left">
|
||||
<input type="hidden"/>
|
||||
<button type="submit" style="white-space:nowrap">Hello</button>
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
15
test/html/render/hackernews.html
Normal file
15
test/html/render/hackernews.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Hacker News table test</title>
|
||||
</head>
|
||||
<body style="margin: 0px; width:600px">
|
||||
<table width="50%" cellspacing=0 bgcolor="#f6f6ef">
|
||||
<tr>
|
||||
<td bgcolor="#ff6600">
|
||||
Hello world.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
15
test/html/render/hackernews.ref.html
Normal file
15
test/html/render/hackernews.ref.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Hacker News table test</title>
|
||||
</head>
|
||||
<body style="margin: 0px">
|
||||
<table style="width: 300px" border=0 cellspacing=0 bgcolor="#f6f6ef">
|
||||
<tr>
|
||||
<td bgcolor="#ff6600" border=0 cellspacing=0>
|
||||
Hello world.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
18
test/html/render/img-aspect-ratio-absolute.html
Normal file
18
test/html/render/img-aspect-ratio-absolute.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio with height larger than viewport</title>
|
||||
<style>
|
||||
body {
|
||||
min-width: 16px;
|
||||
}
|
||||
img {
|
||||
width:100%;
|
||||
height:100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img src="pic.png">
|
||||
</body>
|
||||
</html>
|
||||
18
test/html/render/img-aspect-ratio-absolute.ref.html
Normal file
18
test/html/render/img-aspect-ratio-absolute.ref.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio with height larger than viewport</title>
|
||||
<style>
|
||||
body {
|
||||
min-width: 16px;
|
||||
}
|
||||
img {
|
||||
width:755px;
|
||||
height:755px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img src="pic.png">
|
||||
</body>
|
||||
</html>
|
||||
40
test/html/render/img-aspect-ratio-div.html
Normal file
40
test/html/render/img-aspect-ratio-div.html
Normal file
@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio inside an unconstrained div</title>
|
||||
<style>
|
||||
div {
|
||||
/*border: 1px solid black*/;
|
||||
}
|
||||
div.out {
|
||||
width: 300px;
|
||||
height: 600px;
|
||||
background: lightgreen;
|
||||
}
|
||||
div.big {
|
||||
min-width: 16px;
|
||||
}
|
||||
div.small {
|
||||
max-width: 64px;
|
||||
}
|
||||
/* Even if we are specifying the image to have 100% height, the image
|
||||
* must not extend to all the available height of the div.out container.
|
||||
* It should continue to keep the aspect ratio as the width is constrained
|
||||
* to 64 px, so it should be 64 px tall. */
|
||||
img {
|
||||
width:100%;
|
||||
height:100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="out">
|
||||
<div class="big">
|
||||
<img src="pic.png">
|
||||
</div>
|
||||
<div class="small">
|
||||
<img src="pic.png">
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
40
test/html/render/img-aspect-ratio-div.ref.html
Normal file
40
test/html/render/img-aspect-ratio-div.ref.html
Normal file
@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio inside an unconstrained div</title>
|
||||
<style>
|
||||
div {
|
||||
/*border: 1px solid black;*/
|
||||
}
|
||||
div.out {
|
||||
width: 300px;
|
||||
height: 600px;
|
||||
background: lightgreen;
|
||||
}
|
||||
div.big {
|
||||
min-width: 16px;
|
||||
}
|
||||
div.small {
|
||||
max-width: 64px;
|
||||
}
|
||||
/* Even if we are specifying the image to have 100% height, the image
|
||||
* must not extend to all the available height of the div.out container.
|
||||
* It should continue to keep the aspect ratio as the width is constrained
|
||||
* to 64 px, so it should be 64 px tall. */
|
||||
img {
|
||||
width:100%;
|
||||
height:100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="out">
|
||||
<div class="big">
|
||||
<img style="width:300px; height:300px" src="pic.png">
|
||||
</div>
|
||||
<div class="small">
|
||||
<img style="width:64px; height:64px" src="pic.png">
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
42
test/html/render/img-aspect-ratio-mix-border.html
Normal file
42
test/html/render/img-aspect-ratio-mix-border.html
Normal file
@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio while constrained</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
div {width: 640px; height: 640px; background: lightblue;}
|
||||
img {border: 10px solid green}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>All images should be 32px by 32px like this one:</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Only one max-* constraint</p>
|
||||
<img src="pic.png" style="max-width :32px;">
|
||||
<img src="pic.png" style="max-height:32px;">
|
||||
<img src="pic.png" style="max-width :5%;">
|
||||
<img src="pic.png" style="max-height:5%;">
|
||||
<p>One max-* and fixed size constraint</p>
|
||||
<img src="pic.png" style="height:32px; max-width:256px">
|
||||
<img src="pic.png" style="height:5%; max-width:256px">
|
||||
<img src="pic.png" style="max-height:256px; width:32px">
|
||||
<img src="pic.png" style="max-height:256px; width:5%">
|
||||
<p>Two max-* constraints</p>
|
||||
<img src="pic.png" style="max-height:32px; max-width:256px">
|
||||
<img src="pic.png" style="max-height:5%; max-width:256px">
|
||||
<img src="pic.png" style="max-height:256px; max-width:32px">
|
||||
<img src="pic.png" style="max-height:256px; max-width:5%">
|
||||
<p>Both min-* and max-* constrained</p>
|
||||
<img src="pic.png" style="min-width:32px; min-height:16px; max-width:32px; max-height:64px">
|
||||
<img src="pic.png" style="min-width:5%; min-height:16px; max-width:5%; max-height:64px">
|
||||
<img src="pic.png" style="min-width:16px; min-height:32px; max-width:64px; max-height:32px">
|
||||
<img src="pic.png" style="min-width:16px; min-height:5%; max-width:64px; max-height:5%">
|
||||
<p>Bad constraints</p>
|
||||
<img src="pic.png" style="max-width: 16px; min-width: 32px;">
|
||||
<img src="pic.png" style="max-height:16px; min-height:32px;">
|
||||
<img src="pic.png" style="max-width: 16px; min-width: 5%;">
|
||||
<img src="pic.png" style="max-height:16px; min-height:5%;">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
42
test/html/render/img-aspect-ratio-mix-border.ref.html
Normal file
42
test/html/render/img-aspect-ratio-mix-border.ref.html
Normal file
@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio while constrained</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
div {width: 640px; height: 640px; background: lightblue;}
|
||||
img {border: 10px solid green}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>All images should be 32px by 32px like this one:</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Only one max-* constraint</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>One max-* and fixed size constraint</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Two max-* constraints</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Both min-* and max-* constrained</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Bad constraints</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
42
test/html/render/img-aspect-ratio-mix-margin.html
Normal file
42
test/html/render/img-aspect-ratio-mix-margin.html
Normal file
@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio while constrained</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
div {width: 640px; height: 640px; background: lightblue;}
|
||||
img {margin: 10px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>All images should be 32px by 32px like this one:</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Only one max-* constraint</p>
|
||||
<img src="pic.png" style="max-width :32px;">
|
||||
<img src="pic.png" style="max-height:32px;">
|
||||
<img src="pic.png" style="max-width :5%;">
|
||||
<img src="pic.png" style="max-height:5%;">
|
||||
<p>One max-* and fixed size constraint</p>
|
||||
<img src="pic.png" style="height:32px; max-width:256px">
|
||||
<img src="pic.png" style="height:5%; max-width:256px">
|
||||
<img src="pic.png" style="max-height:256px; width:32px">
|
||||
<img src="pic.png" style="max-height:256px; width:5%">
|
||||
<p>Two max-* constraints</p>
|
||||
<img src="pic.png" style="max-height:32px; max-width:256px">
|
||||
<img src="pic.png" style="max-height:5%; max-width:256px">
|
||||
<img src="pic.png" style="max-height:256px; max-width:32px">
|
||||
<img src="pic.png" style="max-height:256px; max-width:5%">
|
||||
<p>Both min-* and max-* constrained</p>
|
||||
<img src="pic.png" style="min-width:32px; min-height:16px; max-width:32px; max-height:64px">
|
||||
<img src="pic.png" style="min-width:5%; min-height:16px; max-width:5%; max-height:64px">
|
||||
<img src="pic.png" style="min-width:16px; min-height:32px; max-width:64px; max-height:32px">
|
||||
<img src="pic.png" style="min-width:16px; min-height:5%; max-width:64px; max-height:5%">
|
||||
<p>Bad constraints</p>
|
||||
<img src="pic.png" style="max-width: 16px; min-width: 32px;">
|
||||
<img src="pic.png" style="max-height:16px; min-height:32px;">
|
||||
<img src="pic.png" style="max-width: 16px; min-width: 5%;">
|
||||
<img src="pic.png" style="max-height:16px; min-height:5%;">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
42
test/html/render/img-aspect-ratio-mix-margin.ref.html
Normal file
42
test/html/render/img-aspect-ratio-mix-margin.ref.html
Normal file
@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio while constrained</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
div {width: 640px; height: 640px; background: lightblue;}
|
||||
img {margin: 10px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>All images should be 32px by 32px like this one:</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Only one max-* constraint</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>One max-* and fixed size constraint</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Two max-* constraints</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Both min-* and max-* constrained</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Bad constraints</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
41
test/html/render/img-aspect-ratio-mix.html
Normal file
41
test/html/render/img-aspect-ratio-mix.html
Normal file
@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio while constrained</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
div {width: 640px; height: 640px; background: lightblue;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>All images should be 32px by 32px like this one:</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Only one max-* constraint</p>
|
||||
<img src="pic.png" style="max-width :32px;">
|
||||
<img src="pic.png" style="max-height:32px;">
|
||||
<img src="pic.png" style="max-width :5%;">
|
||||
<img src="pic.png" style="max-height:5%;">
|
||||
<p>One max-* and fixed size constraint</p>
|
||||
<img src="pic.png" style="height:32px; max-width:256px">
|
||||
<img src="pic.png" style="height:5%; max-width:256px">
|
||||
<img src="pic.png" style="max-height:256px; width:32px">
|
||||
<img src="pic.png" style="max-height:256px; width:5%">
|
||||
<p>Two max-* constraints</p>
|
||||
<img src="pic.png" style="max-height:32px; max-width:256px">
|
||||
<img src="pic.png" style="max-height:5%; max-width:256px">
|
||||
<img src="pic.png" style="max-height:256px; max-width:32px">
|
||||
<img src="pic.png" style="max-height:256px; max-width:5%">
|
||||
<p>Both min-* and max-* constrained</p>
|
||||
<img src="pic.png" style="min-width:32px; min-height:16px; max-width:32px; max-height:64px">
|
||||
<img src="pic.png" style="min-width:5%; min-height:16px; max-width:5%; max-height:64px">
|
||||
<img src="pic.png" style="min-width:16px; min-height:32px; max-width:64px; max-height:32px">
|
||||
<img src="pic.png" style="min-width:16px; min-height:5%; max-width:64px; max-height:5%">
|
||||
<p>Bad constraints</p>
|
||||
<img src="pic.png" style="max-width: 16px; min-width: 32px;">
|
||||
<img src="pic.png" style="max-height:16px; min-height:32px;">
|
||||
<img src="pic.png" style="max-width: 16px; min-width: 5%;">
|
||||
<img src="pic.png" style="max-height:16px; min-height:5%;">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
41
test/html/render/img-aspect-ratio-mix.ref.html
Normal file
41
test/html/render/img-aspect-ratio-mix.ref.html
Normal file
@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio while constrained</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
div {width: 640px; height: 640px; background: lightblue;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>All images should be 32px by 32px like this one:</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Only one max-* constraint</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>One max-* and fixed size constraint</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Two max-* constraints</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Both min-* and max-* constrained</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<p>Bad constraints</p>
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
<img src="pic.png" style="width:32px;height:32px;">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
25
test/html/render/img-aspect-ratio-relative-inside-fixed.html
Normal file
25
test/html/render/img-aspect-ratio-relative-inside-fixed.html
Normal file
@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio when both dimensions are relative and container is fixed</title>
|
||||
<style>
|
||||
div {
|
||||
border: 1px solid black;
|
||||
width: 64px;
|
||||
height: 256px;
|
||||
}
|
||||
img {
|
||||
width:100%;
|
||||
height:100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>The image must fill the complete div even if that means distorting it.
|
||||
The image specifies the size as 100% of the container in both dimensions and
|
||||
the container has a fixed size.</p>
|
||||
<div>
|
||||
<img src="pic.png">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio when both dimensions are relative and container is fixed</title>
|
||||
<style>
|
||||
div {
|
||||
border: 1px solid black;
|
||||
width: 64px;
|
||||
height: 256px;
|
||||
}
|
||||
img {
|
||||
width:64px;
|
||||
height:256px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>The image must fill the complete div even if that means distorting it.
|
||||
The image specifies the size as 100% of the container in both dimensions and
|
||||
the container has a fixed size.</p>
|
||||
<div>
|
||||
<img src="pic.png">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
16
test/html/render/img-aspect-ratio.html
Normal file
16
test/html/render/img-aspect-ratio.html
Normal file
@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img src="pic.png" style="height:100px" />
|
||||
<img src="pic.png" style="max-height:100px" />
|
||||
<img src="pic.png" style="width:100px" />
|
||||
<img src="pic.png" style="max-width:100px" />
|
||||
<a href="#"><img src="pic.png" style="max-width:100px" /></a>
|
||||
</body>
|
||||
</html>
|
||||
16
test/html/render/img-aspect-ratio.ref.html
Normal file
16
test/html/render/img-aspect-ratio.ref.html
Normal file
@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test image aspect ratio</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img src="pic.png" style="height:100px; width:100px" />
|
||||
<img src="pic.png" style="height:100px; width:100px" />
|
||||
<img src="pic.png" style="height:100px; width:100px" />
|
||||
<img src="pic.png" style="height:100px; width:100px" />
|
||||
<a href="#"><img src="pic.png" style="height:100px; width:100px" /></a>
|
||||
</body>
|
||||
</html>
|
||||
20
test/html/render/main-style.html
Normal file
20
test/html/render/main-style.html
Normal file
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Main should behave like a div</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="margin-left: 20em; background: lightgreen">
|
||||
div
|
||||
</div>
|
||||
<main style="margin-left: 20em; background: lightgreen">
|
||||
main
|
||||
</main>
|
||||
<header style="margin-left: 20em; background: lightgreen">
|
||||
header
|
||||
</header>
|
||||
<footer style="margin-left: 20em; background: lightgreen">
|
||||
footer
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
20
test/html/render/main-style.ref.html
Normal file
20
test/html/render/main-style.ref.html
Normal file
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Main should behave like a div</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="margin-left: 20em; background: lightgreen">
|
||||
div
|
||||
</div>
|
||||
<div style="margin-left: 20em; background: lightgreen">
|
||||
main
|
||||
</div>
|
||||
<div style="margin-left: 20em; background: lightgreen">
|
||||
header
|
||||
</div>
|
||||
<div style="margin-left: 20em; background: lightgreen">
|
||||
footer
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
16
test/html/render/margin-auto.html
Normal file
16
test/html/render/margin-auto.html
Normal file
@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test CSS margin auto</title>
|
||||
<style>
|
||||
div {height:100px}
|
||||
.container {width:300px; background: lightgreen}
|
||||
.child {width:100px; background: brown; margin:auto }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="child"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
16
test/html/render/margin-auto.ref.html
Normal file
16
test/html/render/margin-auto.ref.html
Normal file
@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test CSS margin auto</title>
|
||||
<style>
|
||||
div {height:100px}
|
||||
.container {width:300px; background: lightgreen}
|
||||
.child {width:100px; background: brown; margin-left:100px; margin-right:100px }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="child"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
22
test/html/render/max-width-body.html
Normal file
22
test/html/render/max-width-body.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width in body</title>
|
||||
<style>
|
||||
body {margin: 20px; max-width: 400px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the works.
|
||||
By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public
|
||||
License for most of our software; it applies also to any other
|
||||
work released this way by its authors. You can apply it to your
|
||||
programs, too.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
22
test/html/render/max-width-body.ref.html
Normal file
22
test/html/render/max-width-body.ref.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width in body</title>
|
||||
<style>
|
||||
body {margin: 20px; width: 400px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the works.
|
||||
By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public
|
||||
License for most of our software; it applies also to any other
|
||||
work released this way by its authors. You can apply it to your
|
||||
programs, too.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
14
test/html/render/max-width-div-clamp.html
Normal file
14
test/html/render/max-width-div-clamp.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {max-width: 1000px; height: 100px; background: lightgreen}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
14
test/html/render/max-width-div-clamp.ref.html
Normal file
14
test/html/render/max-width-div-clamp.ref.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {width: 100%; height: 100px; background: lightgreen}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
23
test/html/render/max-width-div.html
Normal file
23
test/html/render/max-width-div.html
Normal file
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {max-width: 600px; background: lightgrey}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the works.
|
||||
By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public
|
||||
License for most of our software; it applies also to any other
|
||||
work released this way by its authors. You can apply it to your
|
||||
programs, too.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
23
test/html/render/max-width-div.ref.html
Normal file
23
test/html/render/max-width-div.ref.html
Normal file
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {width: 600px; background: lightgrey}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the works.
|
||||
By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public
|
||||
License for most of our software; it applies also to any other
|
||||
work released this way by its authors. You can apply it to your
|
||||
programs, too.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
23
test/html/render/max-width-html.html
Normal file
23
test/html/render/max-width-html.html
Normal file
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width in html tag</title>
|
||||
<style>
|
||||
html {max-width: 400px}
|
||||
body {margin: 20px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the works.
|
||||
By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public
|
||||
License for most of our software; it applies also to any other
|
||||
work released this way by its authors. You can apply it to your
|
||||
programs, too.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
23
test/html/render/max-width-html.ref.html
Normal file
23
test/html/render/max-width-html.ref.html
Normal file
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width in html tag</title>
|
||||
<style>
|
||||
div {width: 360px}
|
||||
body {margin: 20px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the works.
|
||||
By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its users.
|
||||
We, the Free Software Foundation, use the GNU General Public
|
||||
License for most of our software; it applies also to any other
|
||||
work released this way by its authors. You can apply it to your
|
||||
programs, too.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
25
test/html/render/max-width-nested-div.html
Normal file
25
test/html/render/max-width-nested-div.html
Normal file
@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width in a nested div</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {max-width: 400px; background: lightgray}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="background:lightblue">
|
||||
<div class="test">
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the
|
||||
works. By contrast, the GNU General Public License is intended
|
||||
to guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its
|
||||
users. We, the Free Software Foundation, use the GNU General
|
||||
Public License for most of our software; it applies also to any
|
||||
other work released this way by its authors. You can apply it to
|
||||
your programs, too.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
25
test/html/render/max-width-nested-div.ref.html
Normal file
25
test/html/render/max-width-nested-div.ref.html
Normal file
@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width in a nested div</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {width: 400px; background: lightgray}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="background:lightblue">
|
||||
<div class="test">
|
||||
<p>The licenses for most software and other practical works are
|
||||
designed to take away your freedom to share and change the
|
||||
works. By contrast, the GNU General Public License is intended
|
||||
to guarantee your freedom to share and change all versions of a
|
||||
program--to make sure it remains free software for all its
|
||||
users. We, the Free Software Foundation, use the GNU General
|
||||
Public License for most of our software; it applies also to any
|
||||
other work released this way by its authors. You can apply it to
|
||||
your programs, too.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
10
test/html/render/meta-refresh-0-no-url.html
Normal file
10
test/html/render/meta-refresh-0-no-url.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test meta refresh 0 without URL</title>
|
||||
<meta http-equiv="Refresh" content="0">
|
||||
</head>
|
||||
<body>
|
||||
<p>Should be ignored.</p>
|
||||
</body>
|
||||
</html>
|
||||
9
test/html/render/meta-refresh-0-no-url.ref.html
Normal file
9
test/html/render/meta-refresh-0-no-url.ref.html
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test meta refresh 0 without URL</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Should be ignored.</p>
|
||||
</body>
|
||||
</html>
|
||||
15
test/html/render/min-width-body.html
Normal file
15
test/html/render/min-width-body.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test min-width CSS property in the body</title>
|
||||
<style>
|
||||
body {min-width: 2000px; margin: 50px}
|
||||
.test {background: lightgrey}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
<p>Hello</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
15
test/html/render/min-width-body.ref.html
Normal file
15
test/html/render/min-width-body.ref.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test min-width CSS property in the body</title>
|
||||
<style>
|
||||
body {margin: 50px}
|
||||
.test {width: 2000px; background: lightgrey}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
<p>Hello</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
14
test/html/render/min-width-div-extend.html
Normal file
14
test/html/render/min-width-div-extend.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {min-width: 100px; height: 100px; background: lightgreen}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
14
test/html/render/min-width-div-extend.ref.html
Normal file
14
test/html/render/min-width-div-extend.ref.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test max-width CSS properties</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {width: 100%; height: 100px; background: lightgreen}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
15
test/html/render/min-width-div.html
Normal file
15
test/html/render/min-width-div.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test min-width CSS property</title>
|
||||
<style>
|
||||
body {margin: 20px}
|
||||
.test {min-width: 400px; display: inline-block; background: lightgrey}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="test">
|
||||
<p>Hello</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user