--- /dev/null
+#ifndef __COCO_IR_WINDOW_2D_H__
+#define __COCO_IR_WINDOW_2D_H__
+
+#include <cstdint>
+
+namespace coco
+{
+
+class Window2D
+{
+public:
+ Window2D() : _vertical{1}, _horizontal{1}
+ {
+ // DO NOTHING
+ }
+
+public:
+ Window2D(uint32_t vertical, uint32_t horizontal) : _vertical{vertical}, _horizontal{horizontal}
+ {
+ // DO NOTHING
+ }
+
+public:
+ uint32_t vertical(void) const { return _vertical; }
+ Window2D &vertical(uint32_t value);
+
+public:
+ uint32_t horizontal(void) const { return _horizontal; }
+ Window2D &horizontal(uint32_t value);
+
+private:
+ uint32_t _vertical;
+ uint32_t _horizontal;
+};
+
+} // namespace coco
+
+#endif // __COCO_IR_WINDOW_2D_H__
--- /dev/null
+#include "coco/IR/Window2D.h"
+
+namespace coco
+{
+
+Window2D &Window2D::vertical(uint32_t value)
+{
+ _vertical = value;
+ return (*this);
+}
+
+Window2D &Window2D::horizontal(uint32_t value)
+{
+ _horizontal = value;
+ return (*this);
+}
+
+} // namespace coco
--- /dev/null
+#include "coco/IR/Window2D.h"
+
+#include <gtest/gtest.h>
+
+TEST(IR_WINDOW_2D, default_constructor)
+{
+ coco::Window2D stride;
+
+ ASSERT_EQ(stride.vertical(), 1);
+ ASSERT_EQ(stride.horizontal(), 1);
+}
+
+TEST(IR_WINDOW_2D, explicit_constructor_4)
+{
+ coco::Window2D stride{2, 3};
+
+ ASSERT_EQ(stride.vertical(), 2);
+ ASSERT_EQ(stride.horizontal(), 3);
+}
+
+TEST(IR_WINDOW_2D, update)
+{
+ coco::Window2D stride;
+
+ stride.vertical(2).horizontal(3);
+
+ ASSERT_EQ(stride.vertical(), 2);
+ ASSERT_EQ(stride.horizontal(), 3);
+}