Home    Forum    Search    FAQ    Register    Log in


Post new topic  Reply to topic 
Page 1 of 1
 
 
Acceso Mixto A Librerias EXTERNAS En C
Author Message
Quote   Download Post  
Post Acceso Mixto A Librerias EXTERNAS En C 
 
La pregunta va dirigida a todos, pero mas al querido Vuott quien habra picado con la carnada que le puse en el titulo  

Es posible acceder de manera mixta a una libreria que YA este implementada en gambas, pero de manera incompleta?

Por ejemplo tenemos Gb.OpenGL , pero hay funciones de OpenGL que no estan traducidas en gambas. Un ejemplo seria asi:
Lib "libGL"

Extern GLfunNotAvailable(x as float, y as Float)as Boolean


' esto si esta implementado de forma nativa
GL.Viewport(300,400)


Print funNotAvailable(4 , 8)
 
 

 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post Re: Acceso Mixto A Librerias EXTERNAS En C 
 
En términos generales, sí.

Un enorme problema, pero, surge si se tiene que compartir un handle.

Por ejemplo en tu simple caso en efecto no hay handle que compartir en común.
 



 
Last edited by vuott on Saturday, 16 May 2020, 18:10; edited 2 times in total 
vuott - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post Re: Acceso Mixto A Librerias EXTERNAS En C 
 
vuott escribió:  
En términos generales, sí.

Un enorme problema, pero, surge si se tiene que compartir un handle.

Por ejemplo en tu simple caso en efecto no hay handle que compartir en común.


supongamos que tenemos que compartir una imagen que esta en memoria o el Device Context donde esta operando GL de Gambas

en fin, habria que hacer alguna prueba.
 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post Re: Acceso Mixto A Librerias EXTERNAS En C 
 
tercoIDE escribió:  
Un enorme problema, pero, surge si se tiene que compartir un handle.

Exemplum clarissimum (hace falta activar el Componente gb.cairo):

Library "libcairo:2"

' cairo_t* cairo_create(cairo_surface_t *target)
' Creates a new cairo_t with all graphics state parameters set to default values and with target as a target surface.
Private Extern cairo_create(target As Pointer) As Pointer

Public Sub Main()
 
 Dim png As CairoSvgSurface
 Dim cairo As Pointer

  
' Especifica la superficie gráfica (en mm) a crear para dibujar sobre ella:
  png = New CairoSvgSurface(Null, 210, 297)

  cairo = cairo_create(Object.Address(png))

End

 



 
Last edited by vuott on Saturday, 16 May 2020, 21:39; edited 2 times in total 
vuott - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post Re: Acceso Mixto A Librerias EXTERNAS En C 
 
bien hecho, yo he intentado usar el mismo metodo con OpenGL y no lo logre


ahora se me ocurre otro desafio, dibujar una linea en una imagen en memoria, pero sin usar ninguna herramienta como cairo o paint, simplemente escribir en los bytes ARGB que representan la imagen
 




===================
"Los IF son mas rápidos" - autor anónimo
 
Last edited by tercoIDE on Saturday, 16 May 2020, 22:03; edited 1 time in total 
tercoIDE - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post Re: Acceso Mixto A Librerias EXTERNAS En C 
 
tercoIDE escribió:  
dibujar una linea en una imagen en memoria, pero sin usar ninguna herramienta como cairo o paint, simplemente escribir en los bytes ARGB que representan la imagen

En general, para leer o escribir en un flujo de memoria hace falta utilizar los recursos de Memory Stream.
En tu caso tienes que usar la Propiedad ".Data" del Objeto "Image" y el recurso Memory Stream para escribir nuevos datos en el flujo de la memoria que contiene los datos de la imagen.

Exemplum maximum (para este ejemplo hace falta activar los Componentes gb.image, gb.image.io, gb.net y gb.net.curl):

Private ht As New HttpClient As "HTTP"
Private stringa As String


Public Sub Main()
  
  With ht
' Envia una petición al Servidor para descargar los datos de la imagen :
    .URL = "https://foro.gambas-es.org/images/avatars/1496952105564e53f13da18.png"
    .Timeout = 15
' Descarga los datos de la imagen:
    .Get(Null, Null)
  End With
  
End

Public Sub HTTP_Read()  
    
 Dim sBuf As String  
    
' Va a leer el flujo de datos de la imagen:
   If Lof(ht) Then  
     Read #ht, sBuf, Lof(ht)
     stringa &= sBuf
   End If

End

Public Sub HTTP_Finished()
  
  Dim im As New Image
  
  Wait
  ht.Close
    
  ManuAgit(im.FromString(stringa))
  
End


Private Procedure ManuAgit(img As Image)
  
  Dim st As Stream
  Dim i As Integer
  
' Para escribir (o leer) en un flujo de datos en memoria, es necesario utilizar el tipo de datos "Stream":
  st = Memory img.Data For Write
  
' Edita la imagen con líneas verticales rojas:
  For i = img.W / 2 To (img.W * img.H * (img.Depth / 8)) - 1 Step img.W
    Seek #st, i
    Write #st, 255 As Byte  '' R
    Write #st, 0 As Byte    '' G
    Write #st, 0 As Byte    '' B
    Write #st, 255 As Byte  '' A
  Next
  
  st.Close
  
  img.Save("/tmp/nueva_imagen.png", 100)
  
End



https://www.gambas-it.org/wiki/inde...i_Memory_Stream
 



 
Last edited by vuott on Sunday, 17 May 2020, 15:47; edited 9 times in total 
vuott - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post Re: Acceso Mixto A Librerias EXTERNAS En C 
 
hice una pequeña app con tu codice
 

captura_de_pantalla_de_2020_05_17_00_04_33
 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post Re: Acceso Mixto A Librerias EXTERNAS En C 
 
vuott escribió:  
En términos generales, sí.

Un enorme problema, pero, surge si se tiene que compartir un handle.


Por ejemplo podemos pasar a funciones externas de C variables, que no sean Objetos "stricto sensu" de Clases de gambas, como las no estructuradas de tipos numérico; y podemos tambien Array, Estructuras, Punteros.

Imposible gestionar handle de librerias especificas, desde gambas a C y viceversa.  
 



 
vuott - ProfilePM 
Back to topPage bottom
Display posts from previous:    
 
HideSimilar Topics
Topic Author Forum Replies Last Post
No new posts Error De Acceso Al Foro Ender Sobre Gambas-es 5 Friday, 22 January 2010, 22:45 View latest post
Capa
No new posts Acceso Denegado Al Escribir heyplaynow General 4 Wednesday, 10 October 2012, 18:52 View latest post
heyplaynow
No new posts Acceso A Librerías Externas jcarloscamargo General 4 Wednesday, 21 November 2012, 08:16 View latest post
jcarloscamargo
No new posts OpenGL A Traves De Las LIBRERIAS EXTERNAS ... tercoIDE General 7 Sunday, 17 May 2020, 23:10 View latest post
tercoIDE
 

Post new topic  Reply to topic  Page 1 of 1
 

Users browsing this topic: 0 Registered, 0 Hidden and 1 Guest
Registered Users: None


 
Permissions List
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events



  

 

cron