summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2015-07-19 09:34:04 (GMT)
committer Michael Drake <tlsa@netsurf-browser.org>2015-07-19 09:34:04 (GMT)
commit244ff9f08dd8c83baba4d44401eae0e8ebb58246 (patch)
treefed63c5bdb37d8f2dc6afa66748bb5a99050944d
parentc721328b2ce5775a6dbee4b8f37a8c949394c8d8 (diff)
downloadlibnslayout-244ff9f08dd8c83baba4d44401eae0e8ebb58246.tar.gz
libnslayout-244ff9f08dd8c83baba4d44401eae0e8ebb58246.tar.bz2
Add basic buildsystem.
-rw-r--r--Makefile69
-rw-r--r--include/libnslayout/nslayout.h (renamed from include/nslayout.c)30
-rw-r--r--src/Makefile11
-rw-r--r--src/layout.c55
-rw-r--r--src/layout.h20
5 files changed, 180 insertions, 5 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..beb2b46
--- a/dev/null
+++ b/Makefile
@@ -0,0 +1,69 @@
+#!/bin/make
+#
+# Makefile for nslayout
+#
+# Copyright 2009-2015 John-Mark Bell <jmb@netsurf-browser.org>
+
+# Component settings
+COMPONENT := nslayout
+COMPONENT_VERSION := 0.0.0
+# Default to a static library
+COMPONENT_TYPE ?= lib-static
+
+# Setup the tooling
+PREFIX ?= /opt/netsurf
+NSSHARED ?= $(PREFIX)/share/netsurf-buildsystem
+include $(NSSHARED)/makefiles/Makefile.tools
+
+# Reevaluate when used, as BUILDDIR won't be defined yet
+TESTRUNNER = $(BUILDDIR)/test_testrunner$(EXEEXT)
+
+# Toolchain flags
+WARNFLAGS := -Wall -Wextra -W -Wundef -Wpointer-arith -Wcast-align \
+ -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \
+ -Wmissing-declarations -Wnested-externs
+# BeOS/Haiku standard library headers issue warnings
+ifneq ($(BUILD),i586-pc-haiku)
+ WARNFLAGS := $(WARNFLAGS) -Werror
+endif
+
+CFLAGS := -D_BSD_SOURCE -D_DEFAULT_SOURCE \
+ -I$(CURDIR)/include/ -I$(CURDIR)/src \
+ $(WARNFLAGS) $(CFLAGS)
+ifneq ($(GCCVER),2)
+ CFLAGS := $(CFLAGS) -std=c99
+else
+ # __inline__ is a GCCism
+ CFLAGS := $(CFLAGS) -Dinline="__inline__"
+endif
+
+# libwapcaplet, libparserutils, libcss, libdom
+ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
+ ifneq ($(PKGCONFIG),)
+ CFLAGS := $(CFLAGS) $(shell $(PKGCONFIG) \
+ libwapcaplet libparserutils libcss libdom --cflags)
+ LDFLAGS := $(LDFLAGS) $(shell $(PKGCONFIG) \
+ libwapcaplet libparserutils libcss libdom --libs)
+ else
+ CFLAGS := $(CFLAGS) -I$(PREFIX)/include
+ LDFLAGS := $(LDFLAGS) -lparserutils -lwapcaplet -lcss -ldom
+ endif
+endif
+
+include $(NSBUILD)/Makefile.top
+
+ifeq ($(WANT_TEST),yes)
+ ifneq ($(PKGCONFIG),)
+ TESTCFLAGS := $(TESTCFLAGS) $(shell $(PKGCONFIG) --cflags check)
+ TESTLDFLAGS := $(TESTLDFLAGS) $(shell $(PKGCONFIG) --libs check)
+ else
+ TESTLDFLAGS := $(TESTLDFLAGS) -lcheck
+ endif
+endif
+
+# Extra installation rules
+I := /$(INCLUDEDIR)/lib$(COMPONENT)
+
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):include/lib$(COMPONENT)/libnslayout.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) /$(LIBDIR)/pkgconfig:lib$(COMPONENT).pc.in
+INSTALL_ITEMS := $(INSTALL_ITEMS) /$(LIBDIR):$(OUTPUT)
diff --git a/include/nslayout.c b/include/libnslayout/nslayout.h
index 1144e4b..a720b32 100644
--- a/include/nslayout.c
+++ b/include/libnslayout/nslayout.h
@@ -5,6 +5,12 @@
* Copyright 2015 John-Mark Bell <jmb@netsurf-browser.org>
*/
+#ifndef nslayout_nslayout_h_
+#define nslayout_nslayout_h_
+
+#include <libcss/libcss.h>
+#include <dom/dom.h>
+
/** An opaque client-owned replaced element */
typedef void nslayout_replaced;
@@ -16,6 +22,13 @@ typedef struct nslayout_rect {
int h;
} nslayout_rect;
+/** Render list */
+typedef struct nslayout_render_list {
+} nslayout_render_list;
+
+/** Render list */
+typedef struct nslayout_layout nslayout_layout;
+
/**
* A LibNSLayout request
*
@@ -42,8 +55,8 @@ typedef struct nslayout_request {
nslayout_render_list *list; /**< Render list */
} render;
struct {
- width; /**< Document width in px */
- height; /**< Document height in px */
+ unsigned int width; /**< Document width in px */
+ unsigned int height; /**< Document height in px */
} set_extents;
struct {
nslayout_replaced *replaced; /** A replacement object */
@@ -64,6 +77,12 @@ typedef struct nslayout_request {
} response;
} nslayout_request;
+/** Libnslayout return codes */
+typedef enum nslayout_error {
+ NSLAYOUT_OK,
+ NSLAYOUT_NO_MEM
+} nslayout_error;
+
/**
* Initialise LibNSLayout
*
@@ -106,7 +125,7 @@ nslayout_error nslayout_layout_create(
dom_document *doc,
css_select_ctx *css_ctx,
css_media_type *media,
- nslayout_callback *cb;
+ nslayout_callback *cb,
void *pw,
nslayout_layout **layout);
@@ -135,8 +154,8 @@ nslayout_error nslayout_layout_destroy(
nslayout_error nslayout_update_viewport(
nslayout_layout *layout,
nslayout_rect *viewport,
- css_fixed scale
- int dpi);
+ css_fixed scale,
+ unsigned int dpi);
/**
* Find the top-most element at a given point, in terms of z-order.
@@ -189,3 +208,4 @@ nslayout_error nslayout_layout_dirty_area(
nslayout_layout *layout,
nslayout_rect *area);
+#endif
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..7a6251d
--- a/dev/null
+++ b/src/Makefile
@@ -0,0 +1,11 @@
+#
+# Makefile for libnslayout
+#
+# Copyright 2015 Michael Drake <tlsa@netsurf-browser.org>
+#
+# Released under the ISC License (see COPYING file)
+
+# Sources
+DIR_SOURCES := layout.c
+
+include $(NSBUILD)/Makefile.subdir
diff --git a/src/layout.c b/src/layout.c
new file mode 100644
index 0000000..dab4855
--- a/dev/null
+++ b/src/layout.c
@@ -0,0 +1,55 @@
+/*
+ * This file is part of LibNSLayout
+ * Licensed under the ISC License, http://opensource.org/licenses/ISC
+ * Copyright 2015 Michael Drake <tlsa@netsurf-browser.org>
+ */
+
+#include <assert.h>
+#include <stdlib.h>
+
+#include "layout.h"
+
+
+/* Publically exported function, documented in include/libnslayout/nslayout.h */
+nslayout_error nslayout_layout_create(
+ dom_document *doc,
+ css_select_ctx *css_ctx,
+ css_media_type *media,
+ nslayout_callback *cb,
+ void *pw,
+ nslayout_layout **layout)
+{
+ nslayout_layout *l;
+
+ assert(doc != NULL);
+ assert(css_ctx != NULL);
+ assert(media != NULL);
+ assert(cb != NULL);
+ assert(pw != NULL);
+
+ l = calloc(1, sizeof(nslayout_layout));
+ if (l == NULL) {
+ return NSLAYOUT_NO_MEM;
+ }
+
+ /* TODO: Decide: ownership will probably be passed to libnslayout */
+ l->doc = doc;
+ l->css_ctx = css_ctx;
+ l->media = media;
+ l->cb = cb;
+ l->pw = pw;
+
+ *layout = l;
+ return NSLAYOUT_OK;
+}
+
+
+/* Publically exported function, documented in include/libnslayout/nslayout.h */
+nslayout_error nslayout_layout_destroy(
+ nslayout_layout *layout)
+{
+ /* TODO: free/unref the stuff we own in the layout */
+
+ free(layout);
+ return NSLAYOUT_OK;
+}
diff --git a/src/layout.h b/src/layout.h
new file mode 100644
index 0000000..5b43bc6
--- a/dev/null
+++ b/src/layout.h
@@ -0,0 +1,20 @@
+/*
+ * This file is part of LibNSLayout
+ * Licensed under the ISC License, http://opensource.org/licenses/ISC
+ * Copyright 2015 Michael Drake <tlsa@netsurf-browser.org>
+ */
+
+#ifndef nslayout_layout_h_
+#define nslayout_layout_h_
+
+#include <libnslayout/nslayout.h>
+
+struct nslayout_layout {
+ dom_document *doc;
+ css_select_ctx *css_ctx;
+ css_media_type *media;
+ nslayout_callback *cb;
+ void *pw;
+};
+
+#endif