int nxtk_filltoolbar(NXTKWINDOW hfwnd, FAR const struct nxgl_rect_s *rect, nxgl_mxpixel_t color[CONFIG_NX_NPLANES]) { FAR struct nxtk_framedwindow_s *fwnd = (FAR struct nxtk_framedwindow_s *)hfwnd; struct nxgl_rect_s fillrect; #ifdef CONFIG_DEBUG if (!hfwnd || !rect || !color) { set_errno(EINVAL); return ERROR; } #endif /* Clip the rectangle so that it lies within the sub-window bounds * then move the rectangle to that it is relative to the containing * window. */ nxtk_subwindowclip(fwnd, &fillrect, rect, &fwnd->tbrect); /* Then fill it */ return nx_fill((NXWINDOW)hfwnd, &fillrect, color); }
int nxtk_bitmapwindow(NXTKWINDOW hfwnd, FAR const struct nxgl_rect_s *dest, FAR const void **src, FAR const struct nxgl_point_s *origin, unsigned int stride) { FAR struct nxtk_framedwindow_s *fwnd = (FAR struct nxtk_framedwindow_s *)hfwnd; struct nxgl_point_s wndorigin; struct nxgl_rect_s clipdest; #ifdef CONFIG_DEBUG_FEATURES if (!hfwnd || !dest || !src || !origin) { set_errno(EINVAL); return ERROR; } #endif /* Clip the rectangle so that it lies within the sub-window bounds * then move the rectangle to that it is relative to the containing * window. */ nxtk_subwindowclip(fwnd, &clipdest, dest, &fwnd->fwrect); /* Now, move the bitmap origin so that it is relative to the containing * window, not the sub-window. * * Temporarily, position the origin in absolute screen coordinates */ nxgl_vectoradd(&wndorigin, origin, &fwnd->fwrect.pt1); /* Then move the origin so that is relative to the containing window, not the * client subwindow */ nxgl_vectsubtract(&wndorigin, &wndorigin, &fwnd->wnd.bounds.pt1); /* Then copy the bitmap */ nx_bitmap((NXWINDOW)hfwnd, &clipdest, src, &wndorigin, stride); return OK; }