about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/css/values.nim2
-rw-r--r--src/display/lineedit.nim2
-rw-r--r--src/display/term.nim2
-rw-r--r--src/display/winattrs.nim62
-rw-r--r--src/display/window.nim54
-rw-r--r--src/html/dom.nim2
-rw-r--r--src/html/env.nim2
-rw-r--r--src/layout/box.nim2
-rw-r--r--src/layout/engine.nim2
-rw-r--r--src/local/client.nim2
-rw-r--r--src/local/container.nim2
-rw-r--r--src/local/pager.nim2
-rw-r--r--src/render/renderdocument.nim2
-rw-r--r--src/server/buffer.nim2
-rw-r--r--src/server/forkserver.nim2
15 files changed, 75 insertions, 67 deletions
diff --git a/src/css/values.nim b/src/css/values.nim
index aa083a04..6fae4737 100644
--- a/src/css/values.nim
+++ b/src/css/values.nim
@@ -6,7 +6,7 @@ import unicode
 
 import css/cssparser
 import css/selectorparser
-import display/window
+import display/winattrs
 import img/bitmap
 import layout/layoutunit
 import types/color
diff --git a/src/display/lineedit.nim b/src/display/lineedit.nim
index 374cb3d7..6dccdded 100644
--- a/src/display/lineedit.nim
+++ b/src/display/lineedit.nim
@@ -3,7 +3,7 @@ import strutils
 import unicode
 
 import bindings/quickjs
-import display/window
+import display/winattrs
 import js/javascript
 import types/cell
 import types/opt
diff --git a/src/display/term.nim b/src/display/term.nim
index bcdcaf86..792e8a5d 100644
--- a/src/display/term.nim
+++ b/src/display/term.nim
@@ -10,7 +10,7 @@ import unicode
 
 import bindings/termcap
 import config/config
-import display/window
+import display/winattrs
 import types/cell
 import types/color
 import types/opt
diff --git a/src/display/winattrs.nim b/src/display/winattrs.nim
new file mode 100644
index 00000000..74a713bc
--- /dev/null
+++ b/src/display/winattrs.nim
@@ -0,0 +1,62 @@
+import terminal
+
+when defined(posix):
+  import termios
+
+type
+  WindowAttributes* = object
+    width*: int
+    height*: int
+    ppc*: int # cell width
+    ppl*: int # cell height
+    width_px*: int
+    height_px*: int
+
+proc getWindowAttributes*(tty: File): WindowAttributes =
+  when defined(posix):
+    if tty.isatty():
+      var win: IOctl_WinSize
+      if ioctl(cint(getOsFileHandle(tty)), TIOCGWINSZ, addr win) != -1:
+        var cols = int(win.ws_col)
+        var rows = int(win.ws_row)
+        if cols == 0:
+          cols = 80
+        if rows == 0:
+          rows = 24
+        var ppc = int(win.ws_xpixel) div cols
+        var ppl = int(win.ws_ypixel) div rows
+        # some terminal emulators (aka vte) don't set ws_xpixel or ws_ypixel.
+        # solution: use xterm.
+        if ppc == 0:
+          ppc = 9
+        if ppl == 0:
+          ppl = 18
+        # Filling the last row without raw mode breaks things. However,
+        # not supporting Windows means we can always have raw mode, so we can
+        # use all available columns.
+        return WindowAttributes(
+          width: cols,
+          height: rows,
+          ppc: ppc,
+          ppl: ppl,
+          width_px: cols * ppc,
+          height_px: rows * ppl
+        )
+  # For Windows, which is no longer supported. We keep it as a fallback for
+  # when ioctl fails.
+  var height = terminalHeight()
+  if height == 0:
+    height = 24
+  # Windows has no raw mode afaik, so we do not fill the last column to
+  # prevent line wrapping.
+  let width = terminalWidth() - 1
+  let ppc = 9
+  let ppl = 18
+  return WindowAttributes(
+    width: width,
+    height: height,
+    ppc: ppc,
+    ppl: ppl,
+    width_px: ppc * width,
+    height_px: ppl * width
+  )
diff --git a/src/display/window.nim b/src/display/window.nim
deleted file mode 100644
index 278fc3fb..00000000
--- a/src/display/window.nim
+++ /dev/null
@@ -1,54 +0,0 @@
-import terminal
-
-when defined(posix):
-  import termios
-
-
-type
-  WindowAttributes* = object
-    width*: int
-    height*: int
-    ppc*: int # cell width
-    ppl*: int # cell height
-    cell_ratio*: float64 # ppl / ppc
-    width_px*: int
-    height_px*: int
-
-proc getWindowAttributes*(tty: File): WindowAttributes =
-  when defined(posix):
-    if tty.isatty():
-      var win: IOctl_WinSize
-      if ioctl(cint(getOsFileHandle(tty)), TIOCGWINSZ, addr win) != -1:
-        var cols = win.ws_col
-        var rows = win.ws_row
-        if cols == 0:
-          cols = 80
-        if rows == 0:
-          rows = 24
-        # Filling the last row without raw mode breaks things. However,
-        # not supporting Windows means we can always have raw mode, so we can
-        # use all available columns.
-        result.width = int(cols)
-        result.height = int(rows)
-        result.ppc = int(win.ws_xpixel) div result.width
-        result.ppl = int(win.ws_ypixel) div result.height
-        # some terminal emulators (aka vte) don't set ws_xpixel or ws_ypixel.
-        # solution: use xterm.
-        if result.ppc == 0:
-          result.ppc = 9
-        if result.ppl == 0:
-          result.ppl = 18
-        result.width_px = result.width * result.ppc
-        result.height_px = result.height * result.ppl
-        result.cell_ratio = result.ppl / result.ppc
-        return
-  # for Windows. unused.
-  result.width = terminalWidth() - 1
-  result.height = terminalHeight()
-  if result.height == 0:
-    result.height = 24
-  result.ppc = 9
-  result.ppl = 18
-  result.cell_ratio = result.ppl / result.ppc
-  result.width_px = result.ppc * result.width
-  result.height_px = result.ppl * result.height
diff --git a/src/html/dom.nim b/src/html/dom.nim
index 3931ae69..c28cc0e5 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -10,7 +10,7 @@ import tables
 import css/cssparser
 import css/sheet
 import css/values
-import display/window
+import display/winattrs
 import html/enums
 import html/event
 import img/bitmap
diff --git a/src/html/env.nim b/src/html/env.nim
index 24e1482d..6046ee2b 100644
--- a/src/html/env.nim
+++ b/src/html/env.nim
@@ -1,7 +1,7 @@
 import selectors
 import streams
 
-import display/window
+import display/winattrs
 import html/chadombuilder
 import html/dom
 import html/event
diff --git a/src/layout/box.nim b/src/layout/box.nim
index 7c764203..e09b8e37 100644
--- a/src/layout/box.nim
+++ b/src/layout/box.nim
@@ -2,7 +2,7 @@ import options
 
 import css/stylednode
 import css/values
-import display/window
+import display/winattrs
 import layout/layoutunit
 import types/color
 
diff --git a/src/layout/engine.nim b/src/layout/engine.nim
index 9cf45515..4a242e02 100644
--- a/src/layout/engine.nim
+++ b/src/layout/engine.nim
@@ -5,7 +5,7 @@ import unicode
 
 import css/stylednode
 import css/values
-import display/window
+import display/winattrs
 import layout/box
 import layout/layoutunit
 import utils/twtstr
diff --git a/src/local/client.nim b/src/local/client.nim
index 788ea32f..91b111d9 100644
--- a/src/local/client.nim
+++ b/src/local/client.nim
@@ -18,7 +18,7 @@ import bindings/quickjs
 import config/config
 import display/lineedit
 import display/term
-import display/window
+import display/winattrs
 import html/chadombuilder
 import html/dom
 import html/event
diff --git a/src/local/container.nim b/src/local/container.nim
index e62a3cd4..fc113ad3 100644
--- a/src/local/container.nim
+++ b/src/local/container.nim
@@ -7,7 +7,7 @@ when defined(posix):
   import posix
 
 import config/config
-import display/window
+import display/winattrs
 import extern/stdio
 import io/promise
 import io/serialize
diff --git a/src/local/pager.nim b/src/local/pager.nim
index 2559e029..9d1d2fa5 100644
--- a/src/local/pager.nim
+++ b/src/local/pager.nim
@@ -15,7 +15,7 @@ import config/mailcap
 import config/mimetypes
 import display/lineedit
 import display/term
-import display/window
+import display/winattrs
 import extern/editor
 import extern/runproc
 import extern/tempfile
diff --git a/src/render/renderdocument.nim b/src/render/renderdocument.nim
index de2f501f..95e2687b 100644
--- a/src/render/renderdocument.nim
+++ b/src/render/renderdocument.nim
@@ -5,7 +5,7 @@ import css/cascade
 import css/sheet
 import css/stylednode
 import css/values
-import display/window
+import display/winattrs
 import html/dom
 import layout/box
 import layout/engine
diff --git a/src/server/buffer.nim b/src/server/buffer.nim
index 5ed97258..979a2dc0 100644
--- a/src/server/buffer.nim
+++ b/src/server/buffer.nim
@@ -17,7 +17,7 @@ import css/mediaquery
 import css/sheet
 import css/stylednode
 import css/values
-import display/window
+import display/winattrs
 import html/chadombuilder
 import html/dom
 import html/enums
diff --git a/src/server/forkserver.nim b/src/server/forkserver.nim
index 80cc0338..5563817b 100644
--- a/src/server/forkserver.nim
+++ b/src/server/forkserver.nim
@@ -6,7 +6,7 @@ when defined(posix):
   import posix
 
 import config/config
-import display/window
+import display/winattrs
 import io/posixstream
 import io/serialize
 import io/serversocket