[sane-devel] [PATCH] 16bpp support for xscanimage

Sergey Vlasov vsu@altlinux.ru
Tue, 12 Nov 2002 17:18:10 +0300


--=.5CRKO.XD?Xh3Ps
Content-Type: multipart/mixed;
 boundary="Multipart_Tue__12_Nov_2002_17:18:10_+0300_084bbb80"


--Multipart_Tue__12_Nov_2002_17:18:10_+0300_084bbb80
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Hello!

I have added support for 16bpp mode in xscanimage (in standalone mode,
don't know if the current Gimp version supports more than 8 bits per
channel).

Only SANE_FRAME_GRAY and SANE_FRAME_RGB are supported with depth > 8 -
separate SANE_FRAME_{RED,GREEN,BLUE} transfers are not supported.

-- 
Sergey Vlasov
--Multipart_Tue__12_Nov_2002_17:18:10_+0300_084bbb80
Content-Type: text/plain;
 name="sane-frontends-16bpp.patch"
Content-Disposition: attachment;
 filename="sane-frontends-16bpp.patch"
Content-Transfer-Encoding: base64

LS0tIHNhbmUtZnJvbnRlbmRzL3NyYy94c2NhbmltYWdlLmMuMTZicHAJVGh1IE9jdCAyNCAxNToz
MTo1NSAyMDAyCisrKyBzYW5lLWZyb250ZW5kcy9zcmMveHNjYW5pbWFnZS5jCVR1ZSBOb3YgMTIg
MTU6NDg6NDQgMjAwMgpAQCAtMTI2LDYgKzEyNiw4IEBACiAgICAgR3RrV2lkZ2V0ICpmaWxlbmFt
ZV9lbnRyeTsKICAgICBGSUxFICpvdXQ7CiAgICAgbG9uZyBoZWFkZXJfc2l6ZTsKKyAgICBnYm9v
bGVhbiBoYXZlX29kZF9ieXRlOworICAgIGd1aW50OCBvZGRfYnl0ZTsKICNpZmRlZiBIQVZFX0xJ
QkdJTVBfR0lNUF9ICiAgICAgLyogZm9yIEdJTVAgbW9kZTogKi8KICAgICBnaW50MzIgaW1hZ2Vf
SUQ7CkBAIC0xNDUsNiArMTQ3LDcgQEAKIHN0YXRpYyBnaW50IHNlbGRldiA9IC0xOwkvKiBUaGUg
c2VsZWN0ZWQgZGV2aWNlICovCiBzdGF0aWMgZ2ludCBkZWZkZXYgPSAtMTsJLyogVGhlIGRlZmF1
bHQgZGV2aWNlICovCiBzdGF0aWMgZ2ludCBuZGV2czsJCS8qIFRoZSBudW1iZXIgb2YgYXZhaWxh
YmxlIGRldmljZXMgKi8KK3N0YXRpYyBnYm9vbGVhbiBsaXR0bGVfZW5kaWFuOwkvKiBJcyB0aGlz
IGNvbXB1dGVyIGxpdHRsZS1lbmRpYW4gPyovCiBzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29w
dGlvbnNbXSA9CiAgIHsKICAgICB7ImhlbHAiLCBub19hcmd1bWVudCwgTlVMTCwgJ2gnfSwKQEAg
LTE2Myw2ICsxNjYsMTggQEAKIHN0YXRpYyB2b2lkIHNjYW5fc3RhcnQgKHZvaWQpOwogc3RhdGlj
IHZvaWQgc2Nhbl9kb25lICh2b2lkKTsKIAorLyogVGVzdCBpZiB0aGlzIG1hY2hpbmUgaXMgbGl0
dGxlIGVuZGlhbiAoZnJvbSBjb29sc2Nhbi5jKSAqLworc3RhdGljIGdib29sZWFuCitjYWxjX2xp
dHRsZV9lbmRpYW4gKHZvaWQpCit7CisgIFNBTkVfSW50IHRlc3R2YWx1ZSA9IDI1NTsKKyAgdV9p
bnQ4X3QgKmZpcnN0Ynl0ZSA9ICh1X2ludDhfdCAqKSAmIHRlc3R2YWx1ZTsKKworICBpZiAoKmZp
cnN0Ynl0ZSA9PSAyNTUpCisgICAgcmV0dXJuIFRSVUU7CisgIHJldHVybiBGQUxTRTsKK30KKwog
I2lmZGVmIEhBVkVfTElCR0lNUF9HSU1QX0gKIAogc3RhdGljIGludApAQCAtNTg5LDYgKzYwNCw0
MCBAQAogI2VuZGlmIC8qIEhBVkVfTElCR0lNUF9HSU1QX0ggKi8KIAogc3RhdGljIHZvaWQKK3dy
aXRlX3N3YXBwZWRfd29yZHMoRklMRSAqZiwgY2hhciAqYnVmLCBndWludCBsZW4pCit7CisgIGNo
YXIgdG1wX2J1ZlsyXTsKKyAgY2hhciB0bXA7CisgIHVuc2lnbmVkIGludCBpOworCisgIGlmICgh
bGVuKQorICAgIHJldHVybjsKKyAgaWYgKHNjYW5fd2luLmhhdmVfb2RkX2J5dGUpCisgICAgewor
ICAgICAgdG1wX2J1ZlswXSA9ICpidWYrKzsKKyAgICAgIHRtcF9idWZbMV0gPSBzY2FuX3dpbi5v
ZGRfYnl0ZTsKKyAgICAgIGZ3cml0ZSh0bXBfYnVmLCAxLCAyLCBmKTsKKyAgICAgIC0tbGVuOwor
ICAgICAgc2Nhbl93aW4uaGF2ZV9vZGRfYnl0ZSA9IEZBTFNFOworICAgIH0KKyAgaWYgKGxlbikK
KyAgICB7CisgICAgICBmb3IgKGkgPSAxOyBpIDwgbGVuOyBpICs9IDIpCisJeworCSAgdG1wID0g
YnVmW2ldOworCSAgYnVmW2ldID0gYnVmW2kgLSAxXTsKKwkgIGJ1ZltpIC0gMV0gPSB0bXA7CisJ
fQorICAgICAgZndyaXRlKGJ1ZiwgMSwgbGVuICYgfjEsIGYpOworICAgICAgaWYgKGxlbiAmIDEp
CisJeworCSAgc2Nhbl93aW4uaGF2ZV9vZGRfYnl0ZSA9IFRSVUU7CisJICBzY2FuX3dpbi5vZGRf
Ynl0ZSA9IGJ1ZltsZW4gLSAxXTsKKwl9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAogaW5wdXRf
YXZhaWxhYmxlIChncG9pbnRlciBkYXRhLCBnaW50IHNvdXJjZSwgR2RrSW5wdXRDb25kaXRpb24g
Y29uZCkKIHsKICAgU0FORV9IYW5kbGUgZGV2ID0gZ3NnX2RpYWxvZ19nZXRfZGV2aWNlIChkaWFs
b2cpOwpAQCAtNjUyLDcgKzcwMSwxMiBAQAogCXsKIAljYXNlIFNBTkVfRlJBTUVfR1JBWToKIAkg
IGlmIChzY2FuX3dpbi5tb2RlID09IFNUQU5EQUxPTkUpCi0JICAgIGZ3cml0ZSAoYnVmLCAxLCBs
ZW4sIHNjYW5fd2luLm91dCk7CisJICAgIHsKKwkgICAgICBpZiAoc2Nhbl93aW4ucGFyYW0uZGVw
dGggPiA4ICYmIGxpdHRsZV9lbmRpYW4pCisJCXdyaXRlX3N3YXBwZWRfd29yZHMoc2Nhbl93aW4u
b3V0LCBidWYsIGxlbik7CisJICAgICAgZWxzZQorCQlmd3JpdGUgKGJ1ZiwgMSwgbGVuLCBzY2Fu
X3dpbi5vdXQpOworCSAgICB9CiAjaWZkZWYgSEFWRV9MSUJHSU1QX0dJTVBfSAogCSAgZWxzZQog
CSAgICB7CkBAIC02OTMsNyArNzQ3LDEyIEBACiAKIAljYXNlIFNBTkVfRlJBTUVfUkdCOgogCSAg
aWYgKHNjYW5fd2luLm1vZGUgPT0gU1RBTkRBTE9ORSkKLQkgICAgZndyaXRlIChidWYsIDEsIGxl
biwgc2Nhbl93aW4ub3V0KTsKKwkgICAgeworCSAgICAgIGlmIChzY2FuX3dpbi5wYXJhbS5kZXB0
aCA+IDggJiYgbGl0dGxlX2VuZGlhbikKKwkJd3JpdGVfc3dhcHBlZF93b3JkcyhzY2FuX3dpbi5v
dXQsIGJ1ZiwgbGVuKTsKKwkgICAgICBlbHNlCisJCWZ3cml0ZSAoYnVmLCAxLCBsZW4sIHNjYW5f
d2luLm91dCk7CisJICAgIH0KICNpZmRlZiBIQVZFX0xJQkdJTVBfR0lNUF9ICiAJICBlbHNlCiAJ
ICAgIHsKQEAgLTkzMyw2ICs5OTIsNyBAQAogCiAgIHNjYW5fd2luLm51bV9ieXRlcyA9IHNjYW5f
d2luLnBhcmFtLmxpbmVzICogc2Nhbl93aW4ucGFyYW0uYnl0ZXNfcGVyX2xpbmU7CiAgIHNjYW5f
d2luLmJ5dGVzX3JlYWQgPSAwOworICBzY2FuX3dpbi5oYXZlX29kZF9ieXRlID0gRkFMU0U7CiAK
ICAgc3dpdGNoIChzY2FuX3dpbi5wYXJhbS5mb3JtYXQpCiAgICAgewpAQCAtOTQ5LDEwICsxMDA5
LDIwIEBACiAJewogCSAgc3dpdGNoIChzY2FuX3dpbi5wYXJhbS5mb3JtYXQpCiAJICAgIHsKLQkg
ICAgY2FzZSBTQU5FX0ZSQU1FX1JHQjoKIAkgICAgY2FzZSBTQU5FX0ZSQU1FX1JFRDoKIAkgICAg
Y2FzZSBTQU5FX0ZSQU1FX0dSRUVOOgogCSAgICBjYXNlIFNBTkVfRlJBTUVfQkxVRToKKwkgICAg
ICBpZiAoc2Nhbl93aW4ucGFyYW0uZGVwdGggPiA4KQorCQl7CisJCSAgZ3NnX3NldF9zZW5zaXRp
dml0eSAoZGlhbG9nLCBUUlVFKTsKKwkJICBzbnByaW50ZiAoYnVmLCBzaXplb2YgKGJ1ZiksCisJ
CQkgICAgIlNlcGFyYXRlIGNoYW5uZWwgdHJhbnNmZXJzIGFyZSBub3Qgc3VwcG9ydGVkICIKKwkJ
CSAgICAid2l0aCAlZCBiaXRzL2NoYW5uZWwuIiwgc2Nhbl93aW4ucGFyYW0uZGVwdGgpOworCQkg
IGdzZ19lcnJvciAoYnVmKTsKKwkJICByZXR1cm47CisJCX0KKwkgICAgICAvKkZBTExUSFJPVUdI
Ki8KKwkgICAgY2FzZSBTQU5FX0ZSQU1FX1JHQjoKIAkgICAgICBmcHJpbnRmIChzY2FuX3dpbi5v
dXQsICJQNlxuIyBTQU5FIGRhdGEgZm9sbG93c1xuJWQgJWRcbiVkXG4iLAogCQkgICAgICAgc2Nh
bl93aW4ucGFyYW0ucGl4ZWxzX3Blcl9saW5lLCBzY2FuX3dpbi5wYXJhbS5saW5lcywKIAkJICAg
ICAgIChzY2FuX3dpbi5wYXJhbS5kZXB0aCA8PSA4KSA/IDI1NSA6IDY1NTM1KTsKQEAgLTE4MzEs
NiArMTkwMSw3IEBACiAgIERCR19JTklUKCk7CiAgIERCRyhEQkdfZXJyb3IsICJ4c2NhbmltYWdl
ICh2ZXJzaW9uOiAlcywgcGFja2FnZTogJXMpIHN0YXJ0aW5nXG4iLCBWRVJTSU9OLAogICAgICAg
UEFDS0FHRSk7CisgIGxpdHRsZV9lbmRpYW4gPSBjYWxjX2xpdHRsZV9lbmRpYW4oKTsKICAgc2Nh
bl93aW4ubW9kZSA9IFNUQU5EQUxPTkU7CiAgIGd0a19xdWl0X2ZsYWcgPSAwOwogICBwcm9nX25h
bWUgPSBzdHJyY2hyIChhcmd2WzBdLCAnLycpOwo=

--Multipart_Tue__12_Nov_2002_17:18:10_+0300_084bbb80--

--=.5CRKO.XD?Xh3Ps
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE90Q2lW82GfkQfsqIRAm6KAJ9X/2TWaWpijvKoxUiSLyOUOeKttQCfctTj
+9rhU5A8+z/8J7Lj2vxalmc=
=q/4n
-----END PGP SIGNATURE-----

--=.5CRKO.XD?Xh3Ps--