Advertisement
Vladimir_Pruskalyow

PIF.lua

Mar 27th, 2016
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.27 KB | None | 0 0
  1. local gpu = require("component").gpu
  2.  
  3. local PIF = {}
  4. local collib = {
  5.     [0] = 0x000000,
  6.     [1] = 0xFFFFFF,
  7.     [2] = 0xF0F0F0,
  8.     [3] = 0xE1E1E1,
  9.     [4] = 0xD2D2D2,
  10.     [5] = 0xC3C3C3,
  11.     [6] = 0xb4b4b4,
  12.     [7] = 0xA5A5A5,
  13.     [8] = 0x969696,
  14.     [9] = 0x878787,
  15.     [10] = 0x787878,
  16.     [11] = 0x696969,
  17.     [12] = 0x5A5A5A,
  18.     [13] = 0x4B4B4B,
  19.     [14] = 0x3C3C3C,
  20.     [15] = 0x2D2D2D,
  21.     [16] = 0x1E1E1E,
  22.     [17] = 0x0F0F0F,
  23.     [18] = 0xFFFFC0,
  24.     [19] = 0xFFFF80,
  25.     [20] = 0xFFFF40,
  26.     [21] = 0xFFFF00,
  27.     [22] = 0xFFDBFF,
  28.     [23] = 0xFFDBC0,
  29.     [24] = 0xFFDB80,
  30.     [25] = 0xFFDB40,
  31.     [26] = 0xFFDB00,
  32.     [27] = 0xFFB6FF,
  33.     [28] = 0xFFB6C0,
  34.     [29] = 0xFFB680,
  35.     [30] = 0xFFB640,
  36.     [31] = 0xFFB600,
  37.     [32] = 0xFF92FF,
  38.     [33] = 0xFF92C0,
  39.     [34] = 0xFF9280,
  40.     [35] = 0xFF9240,
  41.     [36] = 0xFF9200,
  42.     [37] = 0xFF6DFF,
  43.     [38] = 0xFF6DC0,
  44.     [39] = 0xFF6D80,
  45.     [40] = 0xFF6D40,
  46.     [41] = 0xFF6D00,
  47.     [42] = 0xFF49FF,
  48.     [43] = 0xFF49C0,
  49.     [44] = 0xFF4980,
  50.     [45] = 0xFF4940,
  51.     [46] = 0xFF4900,
  52.     [47] = 0xFF24FF,
  53.     [48] = 0xFF24C0,
  54.     [49] = 0xFF2480,
  55.     [51] = 0xFF2440,
  56.     [52] = 0xFF2400,
  57.     [53] = 0xFF00FF,
  58.     [54] = 0xFF00C0,
  59.     [55] = 0xFF0080,
  60.     [56] = 0xFF0040,
  61.     [57] = 0xFF0000,
  62.     [58] = 0xCCFFFF,
  63.     [59] = 0xCCFFC0,
  64.     [60] = 0xCCFF80,
  65.     [61] = 0xCCFF40,
  66.     [62] = 0xCCFF00,
  67.     [63] = 0xCCDBFF,
  68.     [64] = 0xCCDBC0,
  69.     [65] = 0xCCDB80,
  70.     [66] = 0xCCDB40,
  71.     [67] = 0xCCDB00,
  72.     [68] = 0xCCB6FF,
  73.     [69] = 0xCCB6C0,
  74.     [70] = 0xCCB680,
  75.     [71] = 0xCCB640,
  76.     [72] = 0xCCB600,
  77.     [73] = 0xCC92FF,
  78.     [74] = 0xCC92C0,
  79.     [75] = 0xCC9280,
  80.     [76] = 0xCC9240,
  81.     [77] = 0xCC9200,
  82.     [78] = 0xCC6DFF,
  83.     [79] = 0xCC6DC0,
  84.     [80] = 0xCC6D80,
  85.     [81] = 0xCC6D40,
  86.     [82] = 0xCC6D00,
  87.     [83] = 0xCC49FF,
  88.     [84] = 0xCC49C0,
  89.     [85] = 0xCC4980,
  90.     [86] = 0xCC4940,
  91.     [87] = 0xCC4900,
  92.     [88] = 0xCC24FF,
  93.     [89] = 0xCC24C0,
  94.     [90] = 0xCC2480,
  95.     [91] = 0xCC2440,
  96.     [92] = 0xCC2400,
  97.     [93] = 0xCC00FF,
  98.     [94] = 0xCC00C0,
  99.     [95] = 0xCC0080,
  100.     [96] = 0xCC0040,
  101.     [97] = 0xCC0000,
  102.     [98] = 0x99FFFF,
  103.     [99] = 0x99FFC0,
  104.     [100] = 0x99FF80,
  105.     [101] = 0x99FF40,
  106.     [102] = 0x99FF00,
  107.     [103] = 0x99DBFF,
  108.     [104] = 0x99DBC0,
  109.     [105] = 0x99DB80,
  110.     [106] = 0x99DB40,
  111.     [107] = 0x99DB00,
  112.     [108] = 0x99B6FF,
  113.     [109] = 0x99B6C0,
  114.     [110] = 0x99B680,
  115.     [111] = 0x99B640,
  116.     [112] = 0x99B600,
  117.     [113] = 0x9992FF,
  118.     [114] = 0x9992C0,
  119.     [115] = 0x999280,
  120.     [116] = 0x999240,
  121.     [117] = 0x999200,
  122.     [118] = 0x996DFF,
  123.     [119] = 0x996DC0,
  124.     [120] = 0x996D80,
  125.     [121] = 0x996D40,
  126.     [122] = 0x996D00,
  127.     [123] = 0x9949FF,
  128.     [124] = 0x9949C0,
  129.     [125] = 0x994980,
  130.     [126] = 0x994940,
  131.     [127] = 0x994900,
  132.     [128] = 0x9924FF,
  133.     [129] = 0x9924C0,
  134.     [130] = 0x992480,
  135.     [131] = 0x992440,
  136.     [132] = 0x992400,
  137.     [133] = 0x9900FF,
  138.     [134] = 0x9900C0,
  139.     [135] = 0x990080,
  140.     [136] = 0x990040,
  141.     [137] = 0x990000,
  142.     [138] = 0x66FFFF,
  143.     [139] = 0x66FFC0,
  144.     [140] = 0x66FF80,
  145.     [141] = 0x66FF40,
  146.     [142] = 0x66FF00,
  147.     [143] = 0x66DBFF,
  148.     [144] = 0x66DBC0,
  149.     [145] = 0x66DB80,
  150.     [146] = 0x66DB40,
  151.     [147] = 0x66DB00,
  152.     [148] = 0x66B6FF,
  153.     [149] = 0x66B6C0,
  154.     [150] = 0x66B680,
  155.     [151] = 0x66B640,
  156.     [152] = 0x66B600,
  157.     [153] = 0x6692FF,
  158.     [154] = 0x6692C0,
  159.     [155] = 0x669280,
  160.     [156] = 0x669240,
  161.     [157] = 0x669200,
  162.     [158] = 0x666DFF,
  163.     [159] = 0x666DC0,
  164.     [160] = 0x666D80,
  165.     [161] = 0x666D40,
  166.     [162] = 0x666D00,
  167.     [163] = 0x6649FF,
  168.     [164] = 0x6649C0,
  169.     [165] = 0x664980,
  170.     [166] = 0x664940,
  171.     [167] = 0x664900,
  172.     [168] = 0x6624FF,
  173.     [169] = 0x6624C0,
  174.     [170] = 0x662480,
  175.     [171] = 0x662440,
  176.     [172] = 0x662400,
  177.     [173] = 0x6600FF,
  178.     [174] = 0x6600C0,
  179.     [175] = 0x660080,
  180.     [176] = 0x660040,
  181.     [177] = 0x660000,
  182.     [178] = 0x33FFFF,
  183.     [179] = 0x33FFC0,
  184.     [180] = 0x33FF80,
  185.     [181] = 0x33FF40,
  186.     [182] = 0x33FF00,
  187.     [183] = 0x33DBFF,
  188.     [184] = 0x33DBC0,
  189.     [185] = 0x33DB80,
  190.     [186] = 0x33DB40,
  191.     [187] = 0x33DB00,
  192.     [188] = 0x33B6FF,
  193.     [189] = 0x33B6C0,
  194.     [190] = 0x33B680,
  195.     [191] = 0x33B640,
  196.     [192] = 0x33B600,
  197.     [193] = 0x3392FF,
  198.     [194] = 0x3392C0,
  199.     [195] = 0x339280,
  200.     [196] = 0x339240,
  201.     [197] = 0x339200,
  202.     [198] = 0x336DFF,
  203.     [199] = 0x336DC0,
  204.     [200] = 0x336D80,
  205.     [201] = 0x336D40,
  206.     [202] = 0x336D00,
  207.     [203] = 0x3349FF,
  208.     [204] = 0x3349C0,
  209.     [205] = 0x334980,
  210.     [206] = 0x334940,
  211.     [207] = 0x334900,
  212.     [208] = 0x3324FF,
  213.     [209] = 0x3324C0,
  214.     [210] = 0x332480,
  215.     [211] = 0x332440,
  216.     [212] = 0x332400,
  217.     [213] = 0x3300FF,
  218.     [214] = 0x3300C0,
  219.     [215] = 0x330080,
  220.     [216] = 0x330040,
  221.     [217] = 0x330000,
  222.     [218] = 0x00FFFF,
  223.     [219] = 0x00FFC0,
  224.     [220] = 0x00FF80,
  225.     [221] = 0x00FF40,
  226.     [222] = 0x00DBFF,
  227.     [223] = 0x00DBC0,
  228.     [224] = 0x00DB80,
  229.     [225] = 0x00DB40,
  230.     [226] = 0x00DB00,
  231.     [227] = 0x00B6FF,
  232.     [228] = 0x00B6C0,
  233.     [229] = 0x00B680,
  234.     [230] = 0x00B640,
  235.     [231] = 0x00B600,
  236.     [232] = 0x0092FF,
  237.     [233] = 0x0092C0,
  238.     [234] = 0x009280,
  239.     [235] = 0x009240,
  240.     [236] = 0x009200,
  241.     [237] = 0x006DFF,
  242.     [238] = 0x006DC0,
  243.     [239] = 0x006D80,
  244.     [240] = 0x006D40,
  245.     [241] = 0x006D00,
  246.     [242] = 0x0049FF,
  247.     [243] = 0x0049C0,
  248.     [244] = 0x004980,
  249.     [245] = 0x004940,
  250.     [246] = 0x004900,
  251.     [247] = 0x0024FF,
  252.     [248] = 0x0024C0,
  253.     [249] = 0x002480,
  254.     [250] = 0x002440,
  255.     [251] = 0x002400,
  256.     [252] = 0x0000FF,
  257.     [253] = 0x0000C0,
  258.     [254] = 0x000080,
  259.     [255] = 0x000040,
  260. }
  261.  
  262. function PIF.Draw(x, y, color)
  263.     io.write(color)
  264.     gpu.setBackground(collib[color])
  265.     gpu.set(x, y, " ")
  266.     gpu.setBackground(0x000000)
  267. end
  268.  
  269. function PIF.DrawFile(path, x, y)
  270.     local file = io.open(path, "rb")
  271.     local signature = file:read(3)
  272.     if signature == "PIF" then
  273.         local width = string.byte(file:read(1))
  274.         local height = string.byte(file:read(1))
  275.         io.write("Sign = ", signature, " width = ", width, " height = ", height)
  276.         for yi = 1, height do
  277.             for xi = 1, width do
  278.                 local collor = file:read(1)
  279.                 if not collor then print("Закончился файл") break end
  280.                 collor = collib[string.byte(collor)]
  281.                 gpu.setBackground(collor)
  282.                 gpu.set(x+xi, y+yi, " ")
  283.             end
  284.         end
  285.     end
  286.     gpu.setBackground(0x000000)
  287. end
  288.  
  289. function PIF.GetImage(path)
  290.     local picture = {}
  291.     local file = io.open(path, "rb")
  292.     local signature = file:read(3)
  293.     if signature == "PIF" then
  294.         picture[1] = string.byte(file:read(1))
  295.         picture[2] = string.byte(file:read(1))
  296.         for i = 3, picture[1]*picture[2]+3 do
  297.             picture[i] = string.byte(file:read(1))
  298.         end
  299.     end
  300.     return table.unpack(picture)
  301. end
  302.  
  303. function PIF.SaveTest(path)
  304.     local file = io.open(path, "w")
  305.     file:write("PIF\4\4\1\10\26\54\23\75\105\225\35\86\78\12\65\34\86\13")
  306.     file:close()
  307.     io.write("Тестовая PIF записана в "..path)
  308. end
  309.  
  310. return PIF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement