/* * This file is part of LibNSLayout * Licensed under the ISC License, http://opensource.org/licenses/ISC * Copyright 2015 Michael Drake */ /** \file src/layout.c * Layout object handling */ #include #include #include #include "layout.h" #include "dom/watcher.h" #include "util/dom-str.h" /* Publically exported function, documented in include/libnslayout/nslayout.h */ nslayout_error nslayout_init(void) { return nsl_dom_str_init(); } /* Publically exported function, documented in include/libnslayout/nslayout.h */ nslayout_error nslayout_fini(void) { return nsl_dom_str_fini(); } /* 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 = NULL; assert(doc != NULL); assert(css_ctx != NULL); assert(media != NULL); assert(cb != NULL); printf("Called layout_create\n"); 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; /* TODO: error handling */ nsl_dom_watcher_add_for_layout(l); *layout = l; return NSLAYOUT_OK; } /* Publically exported function, documented in include/libnslayout/nslayout.h */ nslayout_error nslayout_layout_destroy( nslayout_layout *layout) { assert(layout != NULL); /* TODO: free/unref the stuff we own in the layout */ /* TODO: error handling */ nsl_dom_watcher_remove_for_layout(layout); free(layout); return NSLAYOUT_OK; }