Skip to content

Instantly share code, notes, and snippets.

View ErikHellman's full-sized avatar
🏠
Working from home

Erik Hellman ErikHellman

🏠
Working from home
View GitHub Profile
@ErikHellman
ErikHellman / MarkdownComposer.kt
Last active November 22, 2023 12:16
A simple rendered for Markdown text parsed using CommonMarks
package se.hellsoft.markdowncomposer
import android.util.Log
import androidx.compose.foundation.Box
import androidx.compose.foundation.ContentGravity
import androidx.compose.foundation.Text
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.text.InlineTextContent
import androidx.compose.foundation.text.appendInlineContent
import androidx.compose.material.Colors
@ErikHellman
ErikHellman / TextFieldText.dart
Last active April 2, 2020 08:48
Testing the TextField decoration
import 'package:flutter/material.dart';
final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
@ErikHellman
ErikHellman / LoginScreenWithCompose.kt
Created December 16, 2019 17:51
A simple demo of using Jetpack Compose to build a Login screen
package se.hellsoft.jetpackcomposeintro
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.Composable
import androidx.compose.Model
import androidx.compose.state
import androidx.compose.unaryPlus
import androidx.ui.core.*
import androidx.ui.foundation.shape.border.Border
@ErikHellman
ErikHellman / KittyLog.kt
Last active April 1, 2022 03:04
A super tiny wrapper for Android Log utility that allows log printing in unit tests. For a more advanced log wrapper for Android, see https://github.com/JakeWharton/timber/
/*
Licensed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0.txt)
This is a tiny log utility for Android Logcat. It allows logs to be used in code that is unit
tested on host (without Android framework available).
The only advantage with this utility above Timber is that it doesn't require any setup.
For real-world, production application I strongly recommend using Timber (see https://github.com/JakeWharton/timber/) instead.
*/
@file:Suppress("unused")
@ErikHellman
ErikHellman / KittyLog.kt
Created August 19, 2019 09:19
A super tiny wrapper for Android Log utility.
@file:Suppress("unused")
package se.hellsoft.coroutineantipatterns
import android.util.Log
internal const val TAG = "KittyLog"
fun logi(message: String, throwable: Throwable? = null) {
try {
@ErikHellman
ErikHellman / NonBlockingEchoServer.kt
Last active September 7, 2020 06:01
A very simple example of an echo-server using the non-blocking Java I/O APIs
package se.hellsoft.nonblocking.echo
import java.net.InetSocketAddress
import java.nio.ByteBuffer
import java.nio.channels.SelectionKey
import java.nio.channels.Selector
import java.nio.channels.ServerSocketChannel
import java.nio.channels.SocketChannel
/**
@ErikHellman
ErikHellman / ImageFormatName.kt
Last active August 8, 2019 08:01
Kotlin functions for getting the name of an ImageFormat or PixelFormat Integer.
fun imageFormatName(format: Int): String = when (format) {
ImageFormat.DEPTH16 -> "DEPTH16"
ImageFormat.DEPTH_JPEG -> "DEPTH_JPEG"
ImageFormat.DEPTH_POINT_CLOUD -> "DEPTH_POINT_CLOUD"
ImageFormat.FLEX_RGBA_8888 -> "FLEX_RGBA_8888"
ImageFormat.FLEX_RGB_888 -> "FLEX_RGB_888"
ImageFormat.HEIC -> "HEIC"
ImageFormat.JPEG -> "JPEG"
ImageFormat.NV16 -> "NV16"
ImageFormat.NV21 -> "NV21"
@ErikHellman
ErikHellman / WebViewServer.kt
Last active September 12, 2023 16:10
This class is no longer needed now that Google provides WebViewAssetLoader (see https://developer.android.com/reference/kotlin/androidx/webkit/WebViewAssetLoader)
/*
MIT License
Copyright (c) 2019 Erik Hellman
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
@ErikHellman
ErikHellman / WebViewServer.kt
Created April 8, 2019 07:23
A simple "web server" for handling intercepted WebView requests on Android and deliver local content.
@file:Suppress("unused")
package se.hellsoft.webviewserver
import android.content.res.AssetManager
import android.net.Uri
import android.webkit.WebResourceRequest
import android.webkit.WebResourceResponse
import java.io.ByteArrayInputStream
import java.io.File
@ErikHellman
ErikHellman / generateSelector.js
Last active January 10, 2019 06:57
Generate a selector for an element.
// Create a path to an element of the form 2/1/1/34 (index of each child)
function getDomPath(el) {
const stack = [];
while (el.parentNode != null) {
console.log(el.nodeName);
let sibCount = 0;
let sibIndex = 0;
for (let i = 0; i < el.parentNode.childNodes.length; i++) {
const sib = el.parentNode.childNodes[i];
if (sib === el) {