summaryrefslogtreecommitdiff
path: root/openbox/frame.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-16 21:11:39 +0000
committerDana Jansens <danakj@orodu.net>2003-03-16 21:11:39 +0000
commitf8a47de5ec444c452093371e3db16857eb39a490 (patch)
tree31db2567842d98232775f9980f7a8d2586c0ac71 /openbox/frame.c
parent8ba0586bcbdc7fe9648f1063812126d71a041670 (diff)
merge the C branch into HEAD
Diffstat (limited to 'openbox/frame.c')
-rw-r--r--openbox/frame.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/openbox/frame.c b/openbox/frame.c
new file mode 100644
index 00000000..eee01e48
--- /dev/null
+++ b/openbox/frame.c
@@ -0,0 +1,105 @@
+#include "frame.h"
+
+void frame_client_gravity(Frame *self, int *x, int *y)
+{
+ /* horizontal */
+ switch (self->client->gravity) {
+ default:
+ case NorthWestGravity:
+ case SouthWestGravity:
+ case WestGravity:
+ break;
+
+ case NorthGravity:
+ case SouthGravity:
+ case CenterGravity:
+ *x -= (self->size.left + self->size.right) / 2;
+ break;
+
+ case NorthEastGravity:
+ case SouthEastGravity:
+ case EastGravity:
+ *x -= self->size.left + self->size.right;
+ break;
+
+ case ForgetGravity:
+ case StaticGravity:
+ *x -= self->size.left;
+ break;
+ }
+
+ /* vertical */
+ switch (self->client->gravity) {
+ default:
+ case NorthWestGravity:
+ case NorthEastGravity:
+ case NorthGravity:
+ break;
+
+ case CenterGravity:
+ case EastGravity:
+ case WestGravity:
+ *y -= (self->size.top + self->size.bottom) / 2;
+ break;
+
+ case SouthWestGravity:
+ case SouthEastGravity:
+ case SouthGravity:
+ *y -= self->size.top + self->size.bottom;
+ break;
+
+ case ForgetGravity:
+ case StaticGravity:
+ *y -= self->size.top;
+ break;
+ }
+}
+
+void frame_frame_gravity(Frame *self, int *x, int *y)
+{
+ /* horizontal */
+ switch (self->client->gravity) {
+ default:
+ case NorthWestGravity:
+ case WestGravity:
+ case SouthWestGravity:
+ break;
+ case NorthGravity:
+ case CenterGravity:
+ case SouthGravity:
+ *x += (self->size.left + self->size.right) / 2;
+ break;
+ case NorthEastGravity:
+ case EastGravity:
+ case SouthEastGravity:
+ *x += self->size.left + self->size.right;
+ break;
+ case StaticGravity:
+ case ForgetGravity:
+ x += self->size.left;
+ break;
+ }
+
+ /* vertical */
+ switch (self->client->gravity) {
+ default:
+ case NorthWestGravity:
+ case WestGravity:
+ case SouthWestGravity:
+ break;
+ case NorthGravity:
+ case CenterGravity:
+ case SouthGravity:
+ *y += (self->size.top + self->size.bottom) / 2;
+ break;
+ case NorthEastGravity:
+ case EastGravity:
+ case SouthEastGravity:
+ *y += self->size.top + self->size.bottom;
+ break;
+ case StaticGravity:
+ case ForgetGravity:
+ *y += self->size.top;
+ break;
+ }
+}