Mercurial > dwindows
comparison android/DWindows.kt @ 2531:f45ebd96ebe5
Android: First attempts at implementing drawing functions
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 11 May 2021 00:51:20 +0000 |
parents | b9923432cb1f |
children | d862d9e4069b |
comparison
equal
deleted
inserted
replaced
2530:b9923432cb1f | 2531:f45ebd96ebe5 |
---|---|
9 import android.content.ClipboardManager | 9 import android.content.ClipboardManager |
10 import android.content.Context | 10 import android.content.Context |
11 import android.content.DialogInterface | 11 import android.content.DialogInterface |
12 import android.content.pm.ActivityInfo | 12 import android.content.pm.ActivityInfo |
13 import android.content.res.Configuration | 13 import android.content.res.Configuration |
14 import android.graphics.Bitmap | 14 import android.graphics.* |
15 import android.graphics.BitmapFactory | |
16 import android.graphics.Canvas | |
17 import android.graphics.drawable.BitmapDrawable | 15 import android.graphics.drawable.BitmapDrawable |
18 import android.graphics.drawable.Drawable | 16 import android.graphics.drawable.Drawable |
19 import android.graphics.drawable.GradientDrawable | 17 import android.graphics.drawable.GradientDrawable |
20 import android.media.AudioManager | 18 import android.media.AudioManager |
21 import android.media.ToneGenerator | 19 import android.media.ToneGenerator |
403 var firstWindow: Boolean = true | 401 var firstWindow: Boolean = true |
404 var windowLayout: LinearLayout? = null | 402 var windowLayout: LinearLayout? = null |
405 var threadLock = ReentrantLock() | 403 var threadLock = ReentrantLock() |
406 var threadCond = threadLock.newCondition() | 404 var threadCond = threadLock.newCondition() |
407 var notificationID: Int = 0 | 405 var notificationID: Int = 0 |
406 private var paint = Paint() | |
408 | 407 |
409 // Our version of runOnUiThread that waits for execution | 408 // Our version of runOnUiThread that waits for execution |
410 fun waitOnUiThread(runnable: Runnable) | 409 fun waitOnUiThread(runnable: Runnable) |
411 { | 410 { |
412 if(Looper.myLooper() == Looper.getMainLooper()) { | 411 if(Looper.myLooper() == Looper.getMainLooper()) { |
1834 } | 1833 } |
1835 | 1834 |
1836 fun renderRedraw(render: DWRender) | 1835 fun renderRedraw(render: DWRender) |
1837 { | 1836 { |
1838 render.invalidate() | 1837 render.invalidate() |
1838 } | |
1839 | |
1840 fun pixmapBitBlt(dstr: DWRender?, dstp: Bitmap?, dstx: Int, dsty: Int, dstw: Int, dsth: Int, | |
1841 srcr: DWRender?, srcp: Bitmap?, srcy: Int, srcx: Int, srcw: Int, srch: Int): Int | |
1842 { | |
1843 val dst = Rect(dstx, dsty, dstx + dstw, dsty + dsth) | |
1844 var src = Rect(srcx, srcy, srcx + srcw, srcy + srch) | |
1845 var retval: Int = 1 | |
1846 | |
1847 if(srcw == -1) { | |
1848 src.right = srcx + dstw | |
1849 } | |
1850 if(srch == -1) { | |
1851 src.bottom = srcy + dsth | |
1852 } | |
1853 | |
1854 waitOnUiThread { | |
1855 var canvas: Canvas? = null | |
1856 var bitmap: Bitmap? = null | |
1857 | |
1858 if(dstr != null) { | |
1859 canvas = dstr.cachedCanvas | |
1860 } else if(dstp != null) { | |
1861 canvas = Canvas(dstp) | |
1862 } | |
1863 | |
1864 if(srcp != null) { | |
1865 bitmap = srcp | |
1866 } else if(srcr != null) { | |
1867 bitmap = Bitmap.createBitmap(srcr.layoutParams.width, | |
1868 srcr.layoutParams.height, Bitmap.Config.ARGB_8888) | |
1869 val c = Canvas(bitmap) | |
1870 srcr.layout(srcr.left, srcr.top, srcr.right, srcr.bottom) | |
1871 srcr.draw(c) | |
1872 } | |
1873 | |
1874 if(canvas != null && bitmap != null) { | |
1875 canvas.drawBitmap(bitmap, src, dst, null) | |
1876 retval = 0 | |
1877 } | |
1878 } | |
1879 return retval | |
1880 } | |
1881 | |
1882 fun drawPoint(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int) | |
1883 { | |
1884 waitOnUiThread { | |
1885 var canvas: Canvas? = null | |
1886 | |
1887 if(render != null) { | |
1888 canvas = render.cachedCanvas | |
1889 } else if(bitmap != null) { | |
1890 canvas = Canvas(bitmap) | |
1891 } | |
1892 | |
1893 if(canvas != null) { | |
1894 canvas.drawPoint(x.toFloat(), y.toFloat(), Paint()) | |
1895 } | |
1896 } | |
1897 } | |
1898 | |
1899 fun drawLine(render: DWRender?, bitmap: Bitmap?, x1: Int, y1: Int, x2: Int, y2: Int) | |
1900 { | |
1901 waitOnUiThread { | |
1902 var canvas: Canvas? = null | |
1903 | |
1904 if(render != null) { | |
1905 canvas = render.cachedCanvas | |
1906 } else if(bitmap != null) { | |
1907 canvas = Canvas(bitmap) | |
1908 } | |
1909 | |
1910 if(canvas != null) { | |
1911 canvas.drawLine(x1.toFloat(), y1.toFloat(), x2.toFloat(), y2.toFloat(), paint) | |
1912 } | |
1913 } | |
1914 } | |
1915 | |
1916 fun drawRect(render: DWRender?, bitmap: Bitmap?, x: Int, y: Int, width: Int, height: Int) | |
1917 { | |
1918 waitOnUiThread { | |
1919 var canvas: Canvas? = null | |
1920 | |
1921 if(render != null) { | |
1922 canvas = render.cachedCanvas | |
1923 } else if(bitmap != null) { | |
1924 canvas = Canvas(bitmap) | |
1925 } | |
1926 | |
1927 if(canvas != null) { | |
1928 canvas.drawRect(x.toFloat(), y.toFloat(), x.toFloat() + width.toFloat(), y.toFloat() + height.toFloat(), paint) | |
1929 } | |
1930 } | |
1931 } | |
1932 | |
1933 fun colorSet(alpha: Int, red: Int, green: Int, blue: Int) | |
1934 { | |
1935 waitOnUiThread { | |
1936 if(alpha != 0) { | |
1937 paint.color = Color.argb(alpha, red, green, blue) | |
1938 } else { | |
1939 paint.color = Color.rgb(red, green, blue) | |
1940 } | |
1941 } | |
1839 } | 1942 } |
1840 | 1943 |
1841 fun timerConnect(interval: Long, sigfunc: Long, data: Long): Timer | 1944 fun timerConnect(interval: Long, sigfunc: Long, data: Long): Timer |
1842 { | 1945 { |
1843 // creating timer task, timer | 1946 // creating timer task, timer |